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

[C++ OOP] Zmienne

Ostatnio zmodyfikowano 2011-07-05 17:14
Autor Wiadomość
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.
P-35395
DejaVu
» 2011-07-05 16:09:10
Kod.
P-35397
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
    */
}
P-35399
szyx_yankez
» 2011-07-05 16:37:52
C/C++
this->map[ 3 ][ 3 ] = {
    { 2, 3, 4 },
    { 2, 3, 4 },
    { 2, 3, 4 }
};
Nie podawaj konkretnych komórek:
C/C++
this->map = {
    { 2, 3, 4 },
    { 2, 3, 4 },
    { 2, 3, 4 }
};
P-35400
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
P-35401
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.
P-35404
pekfos
» 2011-07-05 17:14:16
jak problem rozwiązany to zamknij :P
P-35405
« 1 »
  Strona 1 z 1