Einfache Frage zu statischen Variablen/Methoden
-
Ich habe etwas in der Art:
// Header class StatischTest { public: static bool doIt; static void yesWeCan(); } bool StatischTest::doIt = true;// CPPclass StatischTest void StatischTest::yesWeCan() { print "NO WE CANT"; }Ich erhalte undefined reference to StatischTest::doIt
Warum ist das so, und vor allem: wie behebe ich es
-
sorry das wichtigste ist:
in yesWeCan die Zeile:
if(StatischTest::doIt)
-
Eigentlich hätte ich bei der Konstellation einen anderen Fehler erwartet - du hast die Definition des statischen Members im Header und damit das Risiko einer Mehrfach-Definition.
-
tz tz tz , das kommt davon wenn man MinimalBeispiele basteln will.
Nochmal:
//Header class Test { private: public: static Typ* variable; static bool isSetUp; static void init(); static void release(); static Typ* getVariable(); };//CPPclass Test Typ* Test::variable = 0; bool Test::isSetUp = false; void Test::init() { if (!Test::isSetUp) { Test::variable = new VonTypAbgeleitet(); Test::isSetUp = true; } } void Test::release() { if (Test::isSetUp) { delete Test::variable ; Test::isSetUp = false; } } Typ* Test::getVariable() { if (Test::isSetUp) return Test::variable; return 0; }In etwa, ein paar Sachen passen immer noch nicht aber es kommt hin
-
Ich sehe hier auch nix was zu einer "undefined reference" führen würde.
-
In der Code-Datei sollte ein Include für den dazugehörigen Header stehen.