Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++][Windows Form] Wyświetlanie zmiennej w etykiecie

Ostatnio zmodyfikowano 2015-05-11 08:37
Autor Wiadomość
lelu0
Temat założony przez niniejszego użytkownika
[C++][Windows Form] Wyświetlanie zmiennej w etykiecie
» 2015-05-07 01:13:42
Cześć, mam problem z programem semestralnym. Chciałbym w etykiecie w GUI programu wyświetlić zawartość zmiennej int. Prosty zapis
this->label2->Text = Player.cash;
 daje jednak błędy kompilacji.
Plik main:
C/C++
#include "stdafx.h"
#include "Form1.h"

using namespace lzerser;

[ STAThreadAttribute ]
int main( array < System::String ^> ^ args )
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault( false );
    //sekcja inicjowania obiektów
    player Player;
   
    // Create the main window and run it
    Application::Run( gcnew Form1() );
    return 0;
}
Player.h i .cpp
C/C++
#pragma once
#include "stdafx.h"
class player
{
private:
   
    char carclass[ 30 ];
    int cash;
    int exp;
    char random_key[ 10 ];
    void generate_random_key( char name[], int age );
public:
    char OutRandomKey( char randomkey[] );
   
    player( void );
    ~player( void );
};
C/C++
#include "StdAfx.h"
#include "player.h"


void player::generate_random_key( char name[], int age ) {
    srand( time( NULL ) );
    random_key[ 0 ] = name[ 2 ];
    random_key[ 1 ] = name[ 0 ];
    random_key[ 2 ] = name[ 1 ];
    random_key[ 3 ] = age;
    random_key[ 4 ] = name[ 1 ];
    random_key[ 5 ] = name[ 3 ];
    random_key[ 6 ] = name[ 0 ];
    random_key[ 7 ] = rand() % 100 + 1;
    random_key[ 8 ] = name[ 2 ] * rand() % 10 + 1;
    random_key[ 9 ] = name[ 2 ] + rand() % 10 + 1;
   
}

char player::OutRandomKey( char randomkey[] ) {
    strcpy( randomkey, random_key );
    return randomkey[ 10 ];
}

player::player( void )
{
    cash = 10000;
    exp = 0;
}


player::~player( void )
{
}

i błędy kompilacji:
Error 1 error C2065: 'Player' : undeclared identifier
Error 2 error C2228: left of '.cash' must have class/struct/union

Pozdrawiam i dziękuje z góry za pomoc.

P-131837
darko202
» 2015-05-07 08:24:40
1.
nie podałeś miejsca w którym chcesz wykonać "Prosty zapis this->label2->Text = Player.cash;"

2.
>>Error 1 error C2065: 'Player' : undeclared identifier
to jest błąd, który zgodnie z opisem informuje, ze próbujesz użyć niezadeklarowanej zmiennej.

tzn. ona jest niewidoczna w miejscu w którym chcesz ją użyć

jest to coś oczywistego - tak jakbyś
C/C++
{
    int cos = 1; // zmienna lokalna dla danego bloku
}

{
    int x = cos; // błąd,  bo zmienna cos nie powinna być widoczna w tym bloku
}
P-131839
lelu0
Temat założony przez niniejszego użytkownika
» 2015-05-07 20:13:09
Czyli jeżeli napisze sobie w klasie Player publiczną funkcję zwracającą tę zmienną, program zadziała?
Jaka powinna być składnia wyświetlania zmiennej w label? Nigdzie w internecie nie mogę znaleźć na ten temat konkretnej informacji...
Dzięki za dotychczasową pomoc :)
P-131862
darko202
» 2015-05-08 08:56:20
raczej nie, bo myślisz w złym kierunku

1.
zrozum to co Cię spotyka w tym programie.

2.
moim zdaniem poprzedni przykład obrazuje Twój problem
wywołujesz zmienną niewidoczną w tym kontekście

3.
zrozum czym jest wskaźnik "this" ?
nie napisałeś gdzie realizujesz
this->label2->Text = ...

prawdopodobnie jesteś w klasie forma (plik Form.cpp - przypuszczenie)
i to this odnosi się do tej formy

jeśli nie załączyłeś tam nagłówka "Player.h"
to nie można tam utworzyć obiektu klasy player

ale nawet jak dołączyłeś to widać w kodzie, że obiekt klasy player tworzysz pliku main.cpp

i Form.cpp nie widzi tego obiektu (inny blok danych), dlatego masz
Error 1 error C2065: 'Player' : undeclared identifier

popatrz na mój poprzedni przykład i spraw, aby zmienna "cos" stała się widoczna w 2 bloku
potem popatrz na swoje bloki programu i zrób to samo 

4.
przestań szukać w internecie, a zacznij myśleć ! 
tak się niestety zdarza, że aby coś znaleźć, trzeba wiedzieć czego szukać !

jak to było
"Koziołek Matołek, tęga głowa ...wędruje po całym świecie, aby dojść do Pacanowa"

powodzenia



P-131876
lelu0
Temat założony przez niniejszego użytkownika
tablica obiektów
» 2015-05-10 19:41:27
Okej, dzięki, ten problem rozwiązany, ale jak to bywa, mam inny...
tworzę sobie tablicę obiektów:
C/C++
protected:
int arb[ 2 ];
double camber[ 4 ];
int cooling;
engine engines[ 6 ];
tire tires[ 4 ];
i błąd kompilatora:
Error 1 error C2146: syntax error : missing ';' before identifier 'tires'

includuje zarówno przez stdafx, jak i ręcznie plik tire.h, jednak to nic nie zmienia..
P-132061
darko202
» 2015-05-11 08:37:48
1.
jest zasada na forum
"nowy problem - nowy wątek (temat)"
stary zamykamy

2.
masz błąd c2146 -> szukamy google -> "c2146 error c++"
MSDN reference
https://msdn.microsoft.com​/pl-pl/library/9xbcaa9t.aspx

Błąd składni: Brak token, zanim identyfikator 'Identyfikator' 
Kompilator Oczekiwano token i identifier zamiast.
Możliwe przyczyny: 
a. Błąd pisowni lub użycia wielkich liter. 
b. Brak specyfikatora typu w deklaracji identyfikatora.


co oznacza znów podobny problem do poprzedniego ?
składnia lub błąd z widocznością użytych typów (w tym np. brak odpowiedniego nagłówka)


3. trudno Ci coś więcej poradzić
bo załączasz mało kodu, brak logu z kompilacji

wtedy można by było pewnie powiedzieć coś więcej





P-132073
« 1 »
  Strona 1 z 1