c++ - QT中的Q_OBJECT(对vtable xxx的 undefined reference )

标签 c++ qt

<分区>

我写了一个简单的测试如下:

#include <QCoreApplication>
#include <QObject>

class Foo : public QObject
{
   Q_OBJECT
};

class foo1
{
};

int main(int argc, char* argv[])
{
QCoreApplication a(argc, argv);
Foo f;
return a.exec();
}

这给了我一个错误:

error: undefined reference to `vtable for Foo':

但是,当我将 Foo f 更改为 Foo f() 时,它没有任何错误地符合要求。
所以我的问题是 ff() 有什么区别?

最佳答案

添加括号使其成为函数声明。没有实际创建对象,因此不会发生错误。

Foo f; //declaration of variable of type Foo

Foo f(); //declaration of function taking no args and returning Foo

undefined reference to vtable for Foo 错误是因为您在没有再次运行 qmake 的情况下添加了对 Q_OBJECT 的调用。运行后,错误应该会消失。

关于c++ - QT中的Q_OBJECT(对vtable xxx的 undefined reference ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35953994/

相关文章:

python - 如何将变化的数据延迟加载到 QColumnView 中(使用 PyQt)?

c++ - 如何将具有透明度的 QImage 放到剪贴板上供另一个应用程序使用?

c++ - 如何高效动态地将多个 uniform 传递给 GLSL

c++ - 将控制台中的指标从字符更改为像素

c++ - 如何判断 Qt (C/C++) 程序中是否正在运行屏幕保护程序? (微软 Windows )

c++ - 从类名转换

c++ - 用户定义的比较运算符(运算符>、运算符<等)

c++ - QString::split() 和 "\r"、 "\n"和 "\r\n"约定

c++ - qt 应用程序未运行

qt - 原生 ="true"在 Qt 设计器形式中代表什么