上次发帖之后我以为我已经摆脱了那个怪问题,结果今天继续做发现问题越来越怪了....
这是我的一个类:
class ProcessPanel : public QWidget
{
Q_OBJECT
public:
ProcessPanel(QWidget *parent = 0, const char *name = 0);
void addProcess(Process *aProcess);
private:
QLabel *theLabel;
vector<Process*> vecProcesses;
};
声明了Q_OBJECT,非常正常...
下面是在同一个工程内的另一个类:
class MemBlock : public QPushButton
{
Q_OBJECT
public:
MemBlock(struct MemPage *mp, QWidget* parent = 0, const char* name = 0);
~MemBlock(){};
void showStatus();
private:
int theSize;
int beginAD;
int endAD;
int processID;
int theHeight;
QColor *ptheColor;
};
构造函数的实现部分:
MemBlock::MemBlock(struct MemPage *mp, QWidget* parent, const char* name) : QPushButton(parent, name)
{
......
......
}
MemBlock这个类声明了Q_OBJECT后,编译就会指向构造函数的实现报错:
MemBlock.o: In function `MemBlock':/home/larry_zb/graphicshell/src/MemBlock.cpp:3: undefined reference to `vtable for MemBlock'
:/home/larry_zb/graphicshell/src/MemBlock.cpp:3: undefined reference to `vtable for MemBlock'
:/home/larry_zb/graphicshell/src/MemBlock.cpp:3: undefined reference to `vtable for MemBlock'
:/home/larry_zb/graphicshell/src/MemBlock.cpp:3: undefined reference to `vtable for MemBlock'
如果将构造函数这样写:
MemBlock::MemBlock(struct MemPage *mp, QWidget* parent, const char* name)
{
QPushButton(parent, name);
......
......
}
编译就不会报以上错误,而是指向构造函数的实现报另一个错,粘贴如下:
/home/larry_zb/graphicshell/src/MemBlock.cpp:3: 错误:对 ‘QPushButton::QPushButton()’ 的调用没有匹配的函数
/usr/lib/qt-3.3/include/qpushbutton.h:138: 附注:备选为: QPushButton::QPushButton(const QPushButton&)
/usr/lib/qt-3.3/include/qpushbutton.h:67: 附注: QPushButton::QPushButton(const QIconSet&, const QString&, QWidget*, const char*)
/usr/lib/qt-3.3/include/qpushbutton.h:65: 附注: QPushButton::QPushButton(const QString&, QWidget*, const char*)
/usr/lib/qt-3.3/include/qpushbutton.h:64: 附注: QPushButton::QPushButton(QWidget*, const char*)
这个错误不声明Q_OBJECT也会报,这也是我实在搞不清楚的一个问题,
而上面的ProcessPanel的类声明了Q_OBJECT就一点错误也没有...我真是要崩溃了....
大家救救我把,帮我解答一下
谢谢了