undefined reference to vtable for ...



  • Hallo! Ich bekomme eine Fehlermeldung und weiß nicht was der Grund dafür ist!
    Ich versuche mit Qt ein Fenster zu erstellen, was auch schon geklappt hatte.
    Aber nun möchte ich Slots usw. benutzen und brauche dafür soweit ich das richtig verstanden habe ein "custom" Widget...

    header:

    //...
    class CMyWindow : public QWidget
    {
     Q_OBJECT
    
     private:
      QMainWindow*		p_wndMain;
      QHBox*		p_hbColumn1;
      QPopupMenu*		p_pmFile;
      QPopupMenu*		p_pmOptions;
      QPopupMenu*		p_pmHelp;
    
     public:
      QMainWindow* GetWindow() { return p_wndMain; }
    
      CMyWindow(QWidget *parent=0, const char *name=0 );
      ~CMyWindow() { };
    };
    //...
    

    cpp datei:

    //...
    
    CMyWindow::CMyWindow(QWidget *parent, const char *name )
      : QWidget( parent, name )
    {
       p_hbColumn1 = new QHBox(this);
       p_wndMain = new QMainWindow();
    
       p_wndMain->setCaption("XDTSConvert 0.5");
       p_wndMain->setGeometry(QRect(100,100,640,480));
       p_wndMain->setFixedSize(640,480);
       p_wndMain->statusBar()->message("Ready", 2000);
    
       p_hbColumn1->resize(640,50);
    
       /** MENU BAR **********************************************************/
    
       p_pmFile = new QPopupMenu( p_wndMain );
       p_pmOptions = new QPopupMenu( p_wndMain );
       p_pmHelp = new QPopupMenu( p_wndMain );
    
       p_wndMain->menuBar()->insertItem("&Datei", p_pmFile);
       p_wndMain->menuBar()->insertItem("O&ptionen", p_pmOptions);
       p_wndMain->menuBar()->insertItem("&Hilfe", p_pmHelp);
    
       //                 Name       Parent    Action      Shortkey
       p_pmFile->insertItem("&Oeffnen", this, SLOT(choose()), 0);
       p_pmFile->insertItem("&Schliessen", this, SLOT(func()), 0);
       p_pmFile->insertSeparator();
       p_pmFile->insertItem("&Exportieren", this, SLOT(func()), 0);
       p_pmFile->insertSeparator();
       p_pmFile->insertItem("&Beenden", this, SLOT(quit()), 0);
    
       p_pmOptions->insertItem("&Verhalten", this, SLOT(func()), 0);
    
       p_pmHelp->insertItem("&Handbuch", this, SLOT(func()), 0);
       p_pmHelp->insertItem("&Ueber", this, SLOT(func()), 0);
    
       // Aktionen
    
       //// FERTISCH ==========================================================
    
    }
    //...
    int main(int argc, void** argv)
    {
     DMC model;
     QApplication* pApp = new QApplication(argc,(char**)argv);
    
     CMyWindow 	wndMain;
    
     pApp->setMainWidget( wndMain.GetWindow() ); 
    
     wndMain.show();
    
     pApp->exec();
    
     return 0;
    }
    

    Die Fehlermeldung lautet :

    /home/mathias/dev/cpp/tools/dtsconvert/src/dtsconvert.cpp:900: undefined reference to vtable for CMyWindow' dtsconvert.o(.text+0x493f):/home/mathias/dev/cpp/tools/dtsconvert/src/dtsconvert.cpp:900: undefined reference tovtable for CMyWindow'
    /home/mathias/dev/cpp/tools/dtsconvert/src/dtsconvert.cpp:900: undefined reference to vtable for CMyWindow' dtsconvert.o(.text+0x5293):/home/mathias/dev/cpp/tools/dtsconvert/src/dtsconvert.cpp:900: undefined reference tovtable for CMyWindow'
    /home/mathias/dev/cpp/tools/dtsconvert/src/dtsconvert.h:55: undefined reference to vtable for CMyWindow' dtsconvert.o(.gnu.linkonce.t._ZN9CMyWindowD1Ev+0x1f):/home/mathias/dev/cpp/tools/dtsconvert/src/dtsconvert.h:55: more undefined references tovtable for CMyWindow' follow

    Kann mir jemand helfen?



  • naja so wie ichs sehe fehlen dir die slots choose und func?

    einfach in die .h "private slots:" und dann genauso wie normale member benutzen.


Anmelden zum Antworten