static
-
Hallo!
Ich habe eine static-Funktion in einer Klasse definiert.
Weiters einige static Atribute, die ich in dieser Funktion benutze!
Ich habe jetz aber ein Problem.Ich zeige euch ein kleines Beispiel das mein Problem veranschlaulicht:
//Grr.h #include <iostream.h> class Grr { public: Grr(int i); void Ausgabe(void); private: static int m_i; };
//Grr.cpp #include "Grr.h" Grr::Grr(int i) { m_i=i; } void Grr::Ausgabe(void) { cout<<m_i; }
Beim compilieren erhalte ich aber folgende Fehlermeldung:
Linker-Vorgang läuft...
Grr.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: static int Grr::m_i" (?m_i@Grr@@2HA)
Debug/Trystatic.exe : fatal error LNK1120: 1 unaufgeloeste externe VerweiseKann mir jemand helfen?
Danke
-
Sorry,
Ich habe es mittlerweile selber herausgefunden:
#include "Grr.h" int Grr::m_i; Grr::Grr(int i) { } void Grr::Ausgabe(void) { cout<<Grr::m_i; }
Ich muss im .cpp File die Static variable auch noch deklarieren.
-
du deklarierst sie da nicht nochmal, du musst nur Speicher für sie anlegen
-
Original erstellt von <Hubert>:
Ich muss im .cpp File die Static variable auch noch deklarieren.class T
{
static int foo;
};das deklariert eine variable namens foo
int T::foo;
dies definiert dann die variable namens fooso einfach ist das.