Qt:未定义的对'vtable'引用

Qt: Undefined reference to 'vtable'

本文关键字:vtable 引用 未定义 Qt      更新时间:2023-10-16

我正在Qt中使用c++编写一个程序。但由于这个错误,我陷入了困境。奇怪的是,我创建了一个单独的程序,下面的代码在其中工作,但当我把代码放在程序中时,我得到了一个错误。

error: undefined reference to `vtable for Create_button_config'

错误出现在我创建类的头文件中。这是头文件中发生错误的部分。

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();

你知道这个错误是从哪里来的吗?顺便问一下,这是制作一个关联数组的正确方法吗?这个数组在我的整个代码中都可用?

提前感谢

缺少vtable通常是链接器参数中未包含moc的输出的症状。请确保在标头上运行了moc,并链接了结果。

请注意,如果您使用的是qmake,如果您将一个不是Q_OBJECT的类更改为现在的Q_OBJECT,则可能需要重新运行qmake来生成新的makefile——否则它将不知道应该运行moc

顺便说一句,添加一个接受可选父QObject的构造函数是个好主意,这样可以在用户需要的地方获得Qt内存管理(释放子对象(的一些好处。