我试图返回一个从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
}对可能出什么问题有什么建议吗?这是一个复制构造函数问题吗?
发布于 2013-08-14 22:29:32
QObject类有一个私有复制构造函数。因此,您不能复制从QObject派生的类的实例。还请参阅关于身份与价值的关于此页的讨论QObject。
如果您希望能够复制B的实例,那么要么不继承QObject,要么提供一些克隆B的方法(注意确保适当地管理内存)。
发布于 2013-08-14 22:29:44
当然了。您不能复制或分配QObjects。这正是你在A::ReturnClassB()中所做的;
https://stackoverflow.com/questions/18242944
复制相似问题