今天用Qt使用多继承发现报如下错误:
error C2039: "qt_metacall": 不是 "xxxxxx" 的成员
原格式
class TCPCommunication : public TcpBaseMethod,public QObject
其中 TcpBaseMethod 就是一个普通的自定义类,没有继承任何东东, QObject 是Qt得类,后面发现需要 更改继承 的顺序,错误就解决了
TcpBaseMethod
QObject
更改继承
更改后
class TCPCommunication : public QObject, public TcpBaseMethod
导致错误的原因可能是继承 QObject 并加入 Q_OBJECT 宏的时候,QT环境下在编译的时候会以 第一个继承 的对象(模板?)来生成对应的 moc文件 ,如果带有 Q_OBJECT 宏,必须把 QObject 放在第一个继承的位置
Q_OBJECT
第一个继承
moc文件
参考博客
ject的编译问题问题描述继承一个类,再继承自QObject并添加Q_OBJECT的宏之后,编译不过。class A{public: A(){}; ~A(){};pri...