【问题标题】:Error -: 'QObject::QObject' : cannot access private member declared in class 'QObject'错误-:“QObject::QObject”:无法访问在“QObject”类中声明的私有成员
【发布时间】:2013-08-14 21:50:41
【问题描述】:

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

对可能出现的问题有什么建议吗?是拷贝构造函数的问题吗?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    QObject 类有一个private copy constructor。因此,您不能复制派生自QObject 的类的实例。另请参阅this page 关于QObject 的身份与价值讨论。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-31
        • 1970-01-01
        • 2015-05-20
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 1970-01-01
        • 2014-01-10
        相关资源
        最近更新 更多