2017-03-13 5 views
1

I Klasse World in world.h hat:Ungelöste extern, versuchen statische Variable C++ zu verwenden

class World 
{ 
public: 
    static Ground* ground; 
}; 

und in einer anderen Klasse in einer Funktion, die ich versuche, den statischen Variable Boden so zu verwenden:

#include "Node.h" 
#include "World.h" 
void Node::Foo() 
{ 
    Ground* ground = World::ground; 
} 

und auch in world.cpp ich habe:

#include "stdafx.h" 
#include "World.h" 

static Ground* ground = new Ground(10, 10); 

Aber ich erhalte die folgenden Fehler:

  • LNK2001 nicht aufgelöstes externes Symbol: (Boden @ World @@ 2PAVGround @@ A) "public static Klasse Grund Welt :: ground"
  • LNK1120 1 nicht aufgelöste externe

image of the errors:

+1

Sie die Fehler als Text enthalten, nicht Bilder –

+2

'statische Boden * Boden = new Ground (10, 10);' -> 'Boden * Welt :: Boden = new Ground (10 , 10); ' – George

+1

Diese Frage könnte ein Duplikat sein, aber sie ist unendlich viel klarer formuliert als die ursprüngliche Frage. +1 für OP. – Dan

Antwort

2
static Ground* ground = new Ground(10, 10); 

Sie vermissen World:: dort, so dass Sie eine völlig unabhängige Variable definieren, die zufälligerweise den gleichen Namen hat. Sie sollten dies haben:

Ground* World::ground = new Ground(10, 10); 
+0

Ich musste tatsächlich 'World ::' hinzufügen, und ich musste auch 'static' aus der cpp-Datei entfernen. –

+1

Guter Punkt. Ich habe meine Antwort bearbeitet, um das zu reflektieren. –

Verwandte Themen