Question

Je ne peux pas sembler faire cette référence non définie disparaître.

(capture d'écran de l'émission)

J'ai ce code dans la section privée de Scene.h:

static Scene * scene_;

Il y a un #include « Scene.h » à la première partie de l'en-tête de Scene.cpp

Ceci est la seule erreur que je reçois en ce moment, des idées?

Je vais fournir toute autre information que vous voulez.

Était-ce utile?

La solution

Lorsque vous déclarez un membre statique, vous devez également définir dans une unité de compilation (et un seul):

// a.h
class A
{
   static int x;
};

// a.cpp
int A::x = 0;

La déclaration de la variable dans la classe ne réservera pas la mémoire, il suffit de dire le compilateur (à partir d'autres unités de compilation) qu'il y aura une variable accessible par ce nom défini quelque part.

Autres conseils

Pourquoi utiliser un Scene* au lieu d'un Scene? Vous dites essentiellement « utiliser static d'allouer suffisamment d'espace pour un pointeur vers un Scene », puis au moment de l'exécution vous mettez cet objet Scene sur le tas avec new (et, je suppose, jamais delete il).

Au lieu de cela, tout simplement avoir statique allouent initialize l'objet Scene:

static Scene scene_;

puis changer toutes les références à la scène en conséquence (-.> Devient):

scene_.addObject(&object);

Il est plus facile et prend moins de frappes pour démarrer. C ++ ne nécessite pas new aussi souvent que Java ou C #.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top