Mar*_*ijn 0 c++ qt vtable referenceerror
我正在使用c ++在Qt中编写一个程序.但是由于这个错误,我在这一点上陷入困境.奇怪的是,我创建了一个单独的程序,其中下面的代码工作,但当我把代码放在我的程序中时,我得到一个错误.
error: undefined reference to `vtable for Create_button_config'
Run Code Online (Sandbox Code Playgroud)
错误发生在我创建类的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";
}
};
Run Code Online (Sandbox Code Playgroud)
我在main.cpp中使用它就像这样
Create_button_config config;
config.setParameters();
Run Code Online (Sandbox Code Playgroud)
这个错误来自何处?顺便说一句,这是一个正确的方法来创建一个在我的整个代码中可用的关联数组?
提前致谢
缺少vtable通常是未能moc在链接器参数中包含输出的症状.确保您moc在标题上运行,并且链接了结果.
请注意,如果您正在使用qmake,则可能需要重新运行qmake以生成新的makefile,如果您更改的类不是Q_OBJECT现在的Q_OBJECT- 它将不会知道moc应该运行.
顺便说一下,添加一个带有可选父级的构造函数是个好主意QObject,以获得用户想要的Qt内存管理(释放子对象)的一些好处.