[C++][Windows Form] Wyświetlanie zmiennej w etykiecie
Ostatnio zmodyfikowano 2015-05-11 08:37
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: #include "stdafx.h" #include "Form1.h"
using namespace lzerser;
[ STAThreadAttribute ] int main( array < System::String ^> ^ args ) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault( false ); player Player; Application::Run( gcnew Form1() ); return 0; } Player.h i .cpp #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 ); };
#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. |
|
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ś { int cos = 1; }
{ int x = cos; }
|
|
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 :) |
|
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
|
|
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: 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.. |
|
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.aspxBłą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 |
|
« 1 » |