我试图返回一个派生自 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
}
对可能出现的问题有什么建议吗?是复制构造函数问题吗?
最佳答案
QObject
类有一个 private copy constructor .因此,您不能复制派生自 QObject
的类的实例。另见 this page关于 QObject
的身份与值(value)讨论。
如果您希望能够复制 B
的实例,要么不要从 QObject
继承,要么提供一些克隆 B
的方法(注意确保内存得到适当管理)。
关于c++ - 错误 - : 'QObject::QObject' : cannot access private member declared in class 'QObject' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18242944/