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

时间:2013-08-14 21:50:41

标签: c++ qt

我正在尝试返回一个派生自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
}

有关可能出现的问题的任何建议?它是复制构造函数问题吗?

2 个答案:

答案 0 :(得分:4)

QObject班级有private copy constructor。因此,您无法复制派生自QObject的类的实例。另请参阅有关QObject的身份与价值讨论的this page

如果您希望能够复制B的实例,请不要继承QObject或提供某种克隆方法B(注意确保内存管理适当地)。

答案 1 :(得分:1)

当然。您无法复制或分配QObject。这正是你在A :: ReturnClassB();

中所做的