3

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

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

4

2 回答 2

4

该类QObject有一个私有复制构造函数。因此,您不能复制派生自QObject. 另请参阅有关身份与价值讨论的此页面QObject

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

于 2013-08-14T22:29:32.350 回答
1

当然。您不能复制或分配 QObject。这正是您在 A::ReturnClassB(); 中所做的。

于 2013-08-14T22:29:44.483 回答