Probleme mit statischer Membervariable
-
Hi

Mal "abgespeckter" Code:
class Foobar { public: Foobar() { } ~Foobar() { } private: static DWORD fooVar; static DWORD doublemyfoo() { fooVar *= 2; return fooVar; } };Der Compiler meint:
main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static unsigned long nav::Foobar::fooVar" (?fooVar_@Foobar@nav@@0KA)".
Könnte mir bitte jemand erklären was ich hier falsch mache?

Danke

-
//FooBar.cpp #include "FooBar.hpp" DWORD Foobar::fooVar;
-
volkard schrieb:
//FooBar.cpp #include "FooBar.hpp" DWORD Foobar::fooVar;Uhhh, ist eigentlich ja logisch.
Hab aber gegoogled und nirgendwo wurde irgendetwas anders als die Dekleration innerhalb der Klasse gemacht
Naja, danke !
-
Icematix schrieb:
Hab aber gegoogled und nirgendwo wurde irgendetwas anders als die Dekleration innerhalb der Klasse gemacht

Dein
static DWORD fooVar;innerhalb der Klasse ist auch nur eine Deklaration. Es ist keine Definition. Die Definition dazu muss auch nich irgendwo stehen, ...... es sei denn es handelt sich um integrale Konstanten, die in der Klasse gleich mit einem konstanten Ausdruck "initialisiert" werden, und an keiner Stelle des Programms ist die Adresse der Variable erforderlich. Diese Ausnahmeregel trifft bei Dir aber nicht zu, da Du fooVar als lvalue verwendest (veränderst).