anfaengerfrage statische methoden
-
hallo,
komme leider nicht weiter. was ist hier falsch?
edit : korrigiert, neue fehlermeldung.Mitglied.h ... static Mitglied* ptrVorstand; static Mitglied* getptrVorstand() { return ptrVorstand; // fehler : undefined reference to Mitglied::ptrVorstand } ... main-methode ... Mitglied *ptr=NULL; ptr=Mitglied::getptrVorstand(); ...
-
Wenn Mitglied::getptrVorstand() ein Mitglied * zurückgeben soll must du auch Mitglied * schreiben und nicht * Mitglied.
-
oh, stimmt. hab in meine verzweiflung ständig iwelche operatoren geändert^^
also jetzt kann er auf ptrVorstand nicht zugreifen. Liegt es daran das die Variable noch keinen wert hat? ptrVorstand=NULL innerhalb der headerdatei führt zu
"ungültige Initialisierung innerhalb der Klasse des statischen Datenelements vom nicht eingebauten Typen »Mitglied*«" , bzw zu undefined reference innerhalb der main methode.
-
Will auch editieren können.
http://ideone.com/iweGpB
Wahrscheinlich hast du beim Definieren von ptrVorstand noch nicht deklariert was ein Mitglied ist.
-
ich sehs nich
. so sieht meine klasse aus:class Mitglied { private: int Mitgliedsnummer; string Name; const Datum Geburtstag; public: Mitglied(int Mitgliedsnummer1, string Name1,const Datum &Geburtstag1) :Mitgliedsnummer(Mitgliedsnummer1),Name(Name1),Geburtstag(Geburtstag1) {} static Mitglied *ptrVorstand; static Mitglied* getptrVorstand() { return ptrVorstand; //undefined reference } static void setptrVorstand(Mitglied* vorstandNeu) { ptrVorstand=NULL; //undefined reference } };
-
Das ist ein Linkerfehler, du hast ptrVorstand nicht definiert.
// in der .cpp-Datei: Mitglied *Mitglied::ptrVorstand;edit: Sorry, das static gehört in der Tat nicht zur Definition. Typischer C&P-Fehler

-
in der cpp-datei sagt er mir dann
»static« darf nicht bei der Definition (im Gegensatz zu Deklaration) eines statischen Datenelementes verwendet werden [-fpermissive]
-
In der cpp das static weglassen.
-
Ist auch richtig so, das static muss da bei der Definition weg.
wie auch immer, der Code sieht komisch aus. Eventuell ist das ein Fehldesign mit dem static da ...
-
Das "static" soll man da nicht nochmal wiederholen. Also so:
// in der .cpp-Datei: Mitglied *Mitglied::ptrVorstand;
-
super danke