undefined reference in Konstruktorfunktion
-
header.h
class Iso { static bool isinwork; public: Iso() { isinwork = false; } // undefined reference bool status(){return isinwork;} bool buildiso(string isodir); void setworkstatus(bool status){isinwork=status;} //undefined reference };
Hallo , ich bin noch recht neu in c++ aber ich komme einfachnicht über diesen Fehler hinweg!
An den Kommentarstellen // wird immer bemängelt :undefined reference to `Iso::isinwork'
Was ist hier falsch? Ich möchte im Konstruktor den isinwork auf false setzen!?
Ich arbeite mit Eclipse auf Linux Ubuntu und benutze ein MakeFileProjekt automatisch erstellt von eclipse, include Vz. hinzugefügt.
-
Statt:
Iso Object;
dies,
Iso Object();
-
Sorry aber kannst Du das am Code verdeutlichen?
-
Konstruktor funktion zum setzen einer private static bool variable funktioniert nicht
class Iso { static bool isinwork; public: Iso() { isinwork = false;} <- Fehler undefined reference to Iso::isinwork' bool status(){return isinwork;} void setworkstatus(bool stat) { isinwork = stat; } <- Fehler undefined reference to `Iso::isinwork' };
ch erhalte immer den zu den markierten Zeilen gehörenden Fehler!
Was ist das falsch?In der main rufe ich z.b die set funktion später so auf:
Iso iso: iso.setworkstatus(true);
Das default beim Erzeugen des Objekts soll aber FALSE sein!
HILFE!!
-
eine statische eigenschaft einer klasse ist vergleichbar mit extern. sie sagt dem compiler nur, dass da etwas ist, aber es wird kein platz dafür reserviert. man tut das explicit in der source datei der klasse:
header datei:
class c { static int i; };
source datei:
#include "header-datei" int c::i = 0;
initialisiert wird die eigenschaft dann beim programmstart.