错误 -: 'QObject::QObject' : 无法访问类 'QObject' 中声明的私有成员

Error -: 'QObject::QObject' : cannot access private member declared in class 'QObject'

本文关键字:QObject 声明 成员 错误 访问      更新时间:2023-10-16

我试图返回一个从QObject派生的类,但我得到了以下错误

Error : 'QObject::QObject' : cannot access private member declared in class 'QObject'   

这种情况类似于我的场景

头文件:B.h

class B : public QObject
{
        Q_OBJECT
        private:
            ...
        public:
            B(QObject* parent = 0);
            ...
}

CPP文件:B.cpp

B:B(QObject *parent)
{
//Empty Constructor
}

头文件:A.h

class A
{
private:
     B myClassB;
public :
     B ReturnClassB();
}

CPP文件:C.cpp

B A::ReturnClassB()
{
   return myClassB; //This is where the error occurs
}

有什么可能出错的建议吗?这是复制构造函数的问题吗?

QObject类有一个私有的复制构造函数。因此,不能复制从QObject派生的类的实例。另请参阅本页关于QObject的身份与价值讨论。

如果希望能够复制B的实例,请不要从QObject继承,或者提供一些克隆B的方法(注意确保内存得到适当管理)。

当然。无法复制或分配QObjects。这正是你在A::ReturnClassB()中所做的;