我有一个课程QWidget
class Boo : public QWidget {
Q_OBJECT
public:
Boo(QWidget* parent) : QWidget(parent) {}
};
如果我只是将它添加到cpp文件中,我会收到以下错误:
... [Boo::Boo(QWidget*)]+0x71): undefined reference to `vtable for Boo'
为什么会这样?
是否可以将类添加到.cpp文件中?
答案 0 :(得分:0)
答案是你绝对可以在* .cpp文件中添加这样的声明,它没有任何问题,但是你不应该忘记MOC * .cpp文件,所以要生成和检查适当的* _moc.cpp文件它包含在项目中。如果你使用qmake你应该没问题,如果你使用的是VisualStudio,你应该重新生成VS项目文件。
主要原因是此错误是您没有生成或包含在项目中的* _moc.cpp文件。
答案 1 :(得分:-1)
不,您不能仅将类添加到构建系统MOC中的.cpp文件中,而只能将头文件添加到头文件中。类声明需要位于构建系统MOC编写的头文件中。