keine vtable wenn ich Q_OBJECT einbinde
Verfasst: 22. Oktober 2006 11:40
Hallo allerseits,
ich habe eine Klasse, die einen Slot haben soll. Dazu muss ich das Makro Q_OBJECT ganz oben reinschreiben. Das Problem ist, sobald ich das mache findet der Linker keine vtable mehr für diese klasse!?
hier ein paar schnippsel :
und wenn ich das ganze compilieren will kommt beim linken :
seltsam ist auch, dass der den Fehler dreimal für meinen Destructor anzeigt...dabei hab ich den doch blos einmal implementiert 
wenn ich das makro rausnehme kompiliert er brav aber der slot wird halt zur laufzeit nicht gefunden.
für anregungen bin ich dankbar! Martin
ich habe eine Klasse, die einen Slot haben soll. Dazu muss ich das Makro Q_OBJECT ganz oben reinschreiben. Das Problem ist, sobald ich das mache findet der Linker keine vtable mehr für diese klasse!?
hier ein paar schnippsel :
Code: Alles auswählen
#include <QtCore>
#include <QtGui>
#include <QObject>
//[...]
class cDataManager : public QObject
{
Q_OBJECT
public:
DMAN_MAP_TYPE data;
mainWindow* owner;
cDataManager(mainWindow *parent);
~cDataManager();
void addDataSeries(cDataSeries dat);
void removeDataSeries(QString key);
public slots:
void changeValue(int row, int column);
};Code: Alles auswählen
g++ -o app main.o cDataManager.o mainWindow.o polarizer.o -L/usr/lib -lQtGui -L/build/buildd/qt4-x11-4.2.0/lib -L/usr/X11R6/lib -L/usr/local/qwt/lib -laudio -lXt -lpng -lSM -lICE -lXrender -lXrandr -lXfixes -lXcursor -lXinerama -lfreetype -lXext -lX11 -lQtCore -lfontconfig -lz -lm -lglib-2.0 -ldl -lpthread -lqwt
cDataManager.o: In function `cDataManager::cDataManager(mainWindow*)':
cDataManager.cpp:(.text+0xb0): undefined reference to `vtable for cDataManager'
cDataManager.o: In function `cDataManager::cDataManager(mainWindow*)':
cDataManager.cpp:(.text+0x100): undefined reference to `vtable for cDataManager'
cDataManager.o: In function `cDataManager::~cDataManager()':
cDataManager.cpp:(.text+0x3da): undefined reference to `vtable for cDataManager'
cDataManager.o: In function `cDataManager::~cDataManager()':
cDataManager.cpp:(.text+0x49a): undefined reference to `vtable for cDataManager'
cDataManager.o: In function `cDataManager::~cDataManager()':
cDataManager.cpp:(.text+0x52a): undefined reference to `vtable for cDataManager'
collect2: ld returned 1 exit status
make: *** [app] Fehler 1
wenn ich das makro rausnehme kompiliert er brav aber der slot wird halt zur laufzeit nicht gefunden.
für anregungen bin ich dankbar! Martin