我正在使用c ++编写Qt中的程序。但是由于这个错误,我在这一点上陷入困境。奇怪的是,我创建了一个单独的程序,其中下面的代码工作,但当我把代码放在我的程序中时,我得到一个错误。
error: undefined reference to `vtable for Create_button_config'
错误位于我创建类的Header文件中。这是发生错误的头文件的一部分。
class Create_button_config : public QObject
{
Q_OBJECT
public:
QMap<QString, QString> buttons;
void setParameters(){
qDebug() << "test";
buttons["ID1"] = "#52B1";
buttons["ID2"] = "#52B2";
buttons["ID3"] = "#52B3";
}
};
我在main.cpp中使用它就像这样
Create_button_config config;
config.setParameters();
出现此错误的任何想法? 顺便说一句,这是一个正确的方法来创建一个在我的整个代码中可用的关联数组吗?
提前致谢
答案 0 :(得分:9)
缺少vtable通常是未能在链接器参数中包含moc
的输出的症状。确保您在标题上运行moc
,并将结果链接起来。
请注意,如果您正在使用qmake
,则可能需要重新运行qmake
才能生成新的makefile,如果您更改的课程不是Q_OBJECT
,那么现在Q_OBJECT
- 它不会知道应该运行moc
。
顺便说一下,添加一个带有可选父QObject
的构造函数是个好主意,以获得Qt的内存管理(释放子对象)的一些好处。用户想要它。