Problem beim zugriff auf static Variabeln
-
Hallo Zusammen,
Ich schreibe für die Schule ein kleines Übungsprogramm, dabei wollte ich eine statische Methode einbauen und konnte von dieser aus aber nicht auf eine statische Attribute zugreifen.
Deshalb habe ich ein neues Projekt erstellt und ein kleines test Programm geschrieben um andere Fehler auszuschliessen.
Hier ist mein "Test-Projekt":
// #include "stdafx.h" #include "MyClass.h" int _tmain() { MyClass::reset(); return 0; } //MyClass.h #pragma once class MyClass { private: static int iZahl; public: MyClass(void); ~MyClass(void); static void reset(void){ iZahl = 0; } };
Ich erhalte folgende Fehlermeldungen:
"error LNK2001: unresolved external symbol "private: static int MyClass::iZahl" (?iZahl@MyClass@@0HA)"
und
"fatal error LNK1120: 1 unresolved externals"hmm naja... ich weiss jetzt nicht gnau was ich machen soll, da ich den code schon mit einigen Tutorials verglichen habe und ich konnte keinen wesentlichen Synthax unterschied erkennen.
Vielen dank für die Hilfe
Balz
-
Versuch doch mal die statische Member-Variable seperat zu definieren.
int MyClass::iZahl;
-
Für normale Klassenvariablen holt der Konstruktor den dafür benötigten Speicher. Doch da bei static-Klassenmembern bloß einmal für jeden Typ Speicher geholt werden muss kann das der Konstruktor nicht für dich übernehmen.
Du hast dich also selbst um die Definition der Variablen zu kümmern - bisher hast du sie nur deklariert. In der .cpp-Datei fehlt etwas in dieser Richtung:
int MyClass::iZahl = 0;
BTW: Ungarische Notation ist nicht mehr in :p
MfG SideWinder
-
so jetzt läufts
vielen dank nochmals...