Error beim erstellen einer Klasse
-
Hallo Leute
ich versuch mich gerade an WxWidgets und scheitere schon ganz am Anfang...
mein Header sieht so aus:#ifndef FRAME_H_INCLUDED #define FRAME_H_INCLUDED class App : public wxApp { public: virtual bool OnInit(); }; class Frame : public wxFrame{ public: Frame(char *title, int xpos, int ypos, int xsize, int ysize); ~Frame(); }; #endif // FRAME_H_INCLUDEDund die Source Datei:
#include "Frame.h" #include <wx/wx.h> IMPLEMENT_APP(App) bool App::OnInit(){ Frame *f = new Frame(wxT("TEST"),50,50,200,100); f->Show(true); SetTopWindow(f); return true; } Frame::Frame(char *title, int xpos, int ypos, int xsize, int ysize) : wxFrame(NULL, -1, title, wxPoint(xpos,ypos), wxSize(xsize,ysize)) { }Es kommt folgender Fehler:
Line 4 error: expected class-name before '{’ token
Line 8 error: """"""""""""""""""""""""""""""""""""
Ich verwende Code::Blocks und Fedora(OS) was läuft hier falsch?
-
...
-
Ok verständlich*g*
hab jetzt noch nen error:
Der Code ist wie oben nur die Include umkopiert...
line 18 undefined reference to 'vtable for Frame'
(in der Source Datei)
könnte was mit der Vererbung zu tun haben denk ich!?
-
VTable heisst meistens das du was deklarierst( in .h) aber nicht implementierst (in .cpp) .. ich vermute mal den Destruktor.
-
padreigh schrieb:
VTable heisst meistens das du was deklarierst( in .h) aber nicht implementierst (in .cpp) .. ich vermute mal den Destruktor.
Nein, das ist eine normale undefined reference (und fällt nur auf, wenn das nicht-definierte verwendet wird!)
Wenn du aber hinschreibst "virtual deklariert aber nicht definiert", dann stimmt das mit der "undefined reference to vtable"
selbst wenn es nirgends verwendet wird!// edit:
In diesem Fall ist der Schuldige der Destruktor. In der Basisklasse (wxFrame, vllt. sogar noch tiefer) ist der als virtual deklariert. Auch wenn du es in deiner Klasse nicht hinschreibst, bleibt der virtual, und sobald du ihn deklarierst musst du ihn auch definieren.