我正在尝试返回一个派生自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
}
有关可能出现的问题的任何建议?它是复制构造函数问题吗?
答案 0 :(得分:4)
QObject
班级有private copy constructor。因此,您无法复制派生自QObject
的类的实例。另请参阅有关QObject
的身份与价值讨论的this page。
如果您希望能够复制B
的实例,请不要继承QObject
或提供某种克隆方法B
(注意确保内存管理适当地)。
答案 1 :(得分:1)
当然。您无法复制或分配QObject。这正是你在A :: ReturnClassB();
中所做的