static und member
-
ich habe eine klasse mit einer static funktion, in dieser funktion muss eine member variable geändert werden
der cpmpiler will, dass ich die var static deklariere und wenn ich das getan habe hat der linker ein problem damit
1.ültiger Verweis auf nicht-statischen Member 'CSystem::a'
und mit static
2.System.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: static int CSystem::a" (?a@CSystem@@2HA)
-
steff3 schrieb:
ich habe eine klasse mit einer static funktion, in dieser funktion muss eine member variable geändert werden
Ein Widerpsruch in sich. In static methods gibt es keinen this-Pointer.
Gruß
-
Nabend,
der zweite Fehler tritt auf, weil du vergessen hast, die Variable auch zu definieren:
class A { static int i; }; //in irgend einer cpp-Datei int A::i = 0;mfg
v R
-
steff3 schrieb:
der cpmpiler will, dass ich die var static deklariere
Nein, der Compiler will nicht, dass du auf eine nichtstatische Membervariable aus einer statischen Memberfunktion zugreifst. Wenn du daraufhin die Variable statisch machst, ohne dass es dein gesamtes Design kaputt macht, hattest du vermutlich nie eins.
Man macht Methoden und Variablen nicht statisch, weil man sonst grad nicht drankommt. Da sollte schon eine Designentscheidung dahinterstehen.
-
Ich hatte mal so ziemlich genau das selbe Problem. Eine Klasse hatte eine statische Memberfunktion, welche auf die einzelnen Instanzen der Klasse zugreifen musste. Habs dann so gemacht (Halbpseudocode):
class CTest { CTest()//konstruktor { //Größe des pFirst Array anpassen pFirst = new (CTest*)[count+1]; pFirst[count] = this; count++; } static void func1() { //zugriff auf instanzen der klasse pFirst[y]->func2(); } static int count; static CTest ** pFirst; } CTest::count=0; CTest::pFirst=0;Kann dir bei Bedarf auch den ganzen Code schicken, aber mehr isses eigentlich nicht.
mfg