Zugriff auf statische Member von Außen?
-
Ich habe ein Problemchen mit einer statischen Membervariable.
Ich wollte über eine Methode die Referenz holen.
Aber der Compiler meckert.Das hier erzeugt den Fehler den ich meine:
class CFoo { public: static int m_siFoo; int & Ref(void) { return(m_siFoo); } }; int main() { CFoo Foo; Foo.Ref()=2; // <-- Hier meckert der Compiler was von "Error: Unresolved external 'CFoo::m_siFoo'" return(0); }Was geht da nicht? Gibt es andere Lösungen?
-
Hast du vlt das public in der Klasse vergessen?
-
ztztj schrieb:
Hast du vlt das public in der Klasse vergessen?
Das ändert leider nichts.
-
Doch, die Methode die du aufrufst ist in diesem Fall private.
Deshalb meckert der Compiler. Außerdem musst du die statische
Membervariable noch initalisieren.
-
jetzt meckert er was anderes

-
Du musst die statische Variable eben richtig definieren, und zwar ausserhalb der Klasse.
class CFoo { static int m_siFoo; // Deklaration }; int CFoo::m_siFoo = 34; // Definition
-
class CFoo { public: static int m_siFoo; int & Ref(void) { return(m_siFoo); } }; int CFoo::m_siFoo = 0; int main() { CFoo Foo; Foo.Ref()=2; // <-- Hier meckert der Compiler was von "Error: Unresolved external 'CFoo::m_siFoo'" return(0); }
-
Blaze schrieb:
jetzt meckert er was anderes

Bitte gewöhne dir ab, solche unbrauchbaren Antworten zu schreiben. Der Compiler "meckert" nicht, er schreibt ganz spezifische Fehlermeldungen, die auf das zugrunde liegende Problem hinweisen. Nichts zwingt dich, diese Meldung hier nicht so wiederzugeben, wie sie erscheint. Im Allgemeinen hat hier niemand Lust, dir solche Informationen stückchenweise aus der Nase zu ziehen - die Antworten, die du bekommen hast, waren bereits deutlich mehr, als du erwarten durftest.
-
Sorry.
Danke, es funktioniert!