不能在基类中声明 Signal

Posted

技术标签:

【中文标题】不能在基类中声明 Signal【英文标题】:Cannot declare Signal in baseclass 【发布时间】:2011-08-01 13:48:01 【问题描述】:

我有一个 A 类,B 类和 C 类的父类。我有信号:在 B 类和 C 类中声明和使用。但是当我尝试编写其他信号时:在 A 类中,它给了我 vtable 参考 错误。我无法在 .h 文件中写入 Q_OBJECT 宏,这会导致错误。

【问题讨论】:

【参考方案1】:

由于您没有提供任何代码,我只是猜测一下。

对 `vtable 类型的错误的未定义引用通常源于 moc 编译器未生成代码。

我只是猜测您需要重新运行 qmake。

还要确保此文件包含在 .pro 文件的 HEADERS 部分中。

【讨论】:

这是正确的,每次将Q_OBJECT宏添加到类中都需要重新运行qmake。 问题是当我写信号方法时,我得到了方法没有定义的错误。编译器不会将其视为信号,而是将其视为实例方法。

以上是关于不能在基类中声明 Signal的主要内容,如果未能解决你的问题,请参考以下文章

抽象类

为啥“基类对象”不能调用它自己的虚函数? C++

纯虚函数和抽象类

C++之多态性

虚函数构造和析构函数执行顺序总结

调用派生类的构造函数在基类的构造函数之前执行