undefined reference to GlobalÄIDs Klasse...
-
Hi,
ich habe eine Klasse deklariert, die read-only Werte speichern soll.
#ifndef GLOBALDEFS_H #define GLOBALDEFS_H #include <wx/object.h> class GlobalDefs : public wxObject { public: GlobalDefs(); virtual ~GlobalDefs(); const long SendMessageId; const long RetrieveMessageId; protected: private: }; extern GlobalDefs GlobalIDs; #endif // GLOBALDEFS_H
in der cpp werden sie dann definiert:
#include "GlobalDefs.h" #include <wx/utils.h> GlobalDefs::GlobalDefs(): SendMessageId( wxNewId() ), RetrieveMessageId( wxNewId() ) { //ctor } GlobalDefs::~GlobalDefs() { //dtor }
Im Frame (oder einer anderen Klasse mache ich dann :
#include "GlobalDefs.h" ... wxCommandEvent evt( GlobalIDs.SendMessageId, wxID_ANY );
Das kompilieren scheint auch zu funktionieren, aber das Linken nicht.
Es kommt : undefined reference to `GlobalIDs`.
Der Fehler besagt das es GlobalIDs nicht gibt, aber das Objekt existiert doch?
-
Mit "extern", wie der Name schon sagt, deklarierst Du lediglich, dass es "woanders" solch ein Objekt gibt. Du definierst es aber nirgendwo. Das solltest Du in der cpp nachholen.
-
Hi,
ja, Algengrütze! Stimmt. Ich sollte es dann so machen in der cpp...
... GlobalDefs GlobalIDs;
...und es klappt.