Har gjort om alla mina #define till fina "static const int" som ligger i de klasser där de hör hemma och det ser ju jätte fint ut men nu har jag stött på ett litet problem, eller snarare en undran.
Här är några av mina "static const int", CGame innehåller en (eller flera) CPlayer som innehåller ett CField, allt sakpas direkt när spelet startar.
class CGame
{
private:
int iStatus;
public:
int GetStatus(){return(iStatus);};
static const int STATUS_STOP=80;
static const int STATUS_RUN=81;
static const int STATUS_PAUSE=82;
};
class CField
{
private:
int iStatus;
public:
int GetStatus(){return(iStatus);};
static const int STATUS_REMOVE_LINE=87;
static const int STATUS_NORMAL=88;
static const int MOVE_DOWN=60;
};
I min kod vill jag nu kolla om statusen för CGame är STATUS_RUN och om statusen för CField är STATUS_NORMAL, då fungerar denna kod,
if((pGame->GetStatus()==pGame->STATUS_RUN)&&
((pGame->GetPlayer(1)->GetField()->GetStatus()==CField::STATUS_NORMAL))&&
men om jag skriver
if((pGame->GetStatus()==pGame->STATUS_RUN)&&
((pGame->GetPlayer(1)->GetField()->GetStatus()==pGame->GetPlayer(1)->GetField()->STATUS_NORMAL))&&
så får jag "undefined reference to `CField::STATUS_NORMAL'" när jag kompilerar (gcc 3.0.3 linux), varför?? Jag kan själv inte se någon skilnad på dessa 2 klasser.
/Viktor