TheSnake Temat założony przez niniejszego użytkownika |
[C++ OOP] Zmienne » 2011-07-05 16:03:29 Cześć, uczę się powoli C++ i mam problem z definicją zmiennej, nie wiem jak to powinno być zrobione.
Mam pliki main.cpp, game.h i game.cpp.
W main.cpp jest tylko int main() i wywołanie klasy z game.
W nagłówku mam deklaracje klasy i chciałbym wrzucić jej prywatną tablice dwuwymiarową, pisząc int map[3][3];. Chciałbym też przypisać jej wartości więc w konstruktorze przypisuje i tutaj dostaje błąd. Jeżeli w tym samym miejscu zadeklaruje ją dopiero w konstruktorze to działa. Jak należy to robić? (Mam nadzieje, że wiecie o co chodzi)
Pozdrawiam. |
|
DejaVu |
» 2011-07-05 16:09:10 Kod. |
|
TheSnake Temat założony przez niniejszego użytkownika |
» 2011-07-05 16:26:23 @up,... no, ale po co... main.cpp #include "game.h"
int main() { CGame Game;
return 0; }
game.h #include [..]
class CGame { public: CGame();
private: int map[3][3]; };
game.cpp #include [..] #include "game.h"
CGame::CGame() { this->map[3][3] = { {2, 3, 4}, {2, 3, 4}, {2, 3, 4} }; // tak nie mozna
/* int map2[3][3] = { {2, 3, 4}, {2, 3, 4}, {2, 3, 4} }; // a tak mozna, ale wtedy to nie jest zmienna klasy */ }
|
|
szyx_yankez |
» 2011-07-05 16:37:52 this->map[ 3 ][ 3 ] = { { 2, 3, 4 }, { 2, 3, 4 }, { 2, 3, 4 } };
Nie podawaj konkretnych komórek:
this->map = { { 2, 3, 4 }, { 2, 3, 4 }, { 2, 3, 4 } }; |
|
TheSnake Temat założony przez niniejszego użytkownika |
» 2011-07-05 16:43:05 To nic nie daje, cały czas nie chce się kompilować. warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x Nie wiem jak z tymi flagami, mam gcc 4.5.2 i nie chcę mieć kłopotów, że potem nie będzie coś działało. @Edit, jak w ogóle to włączyć w Eclipse? @Edit2, dopisałem w "Other flags" flagę -std=c++0x i teraz się kompiluje, dzięki :P |
|
Nevervell |
odp. » 2011-07-05 17:11:24 Spróbuj nie definiować tej tablicy w konstruktorze. Zdefiniuj ją w klasie będzie wtedy jej składnikiem a konstruktor to przecież funkcja składowa klasy więc będziesz mieć do niej ( tablicy ) dostęp również w nim.
P.S tablica musi mieć oczywiście przydomek static... Zakładam bowiem że chodzi ci o stworzenie jednej danej która będzie wspólna dla wszystkich obiektów klasy. |
|
pekfos |
» 2011-07-05 17:14:16 jak problem rozwiązany to zamknij :P |
|
« 1 » |