c++ - 错误 - : 'QObject::QObject' : cannot access private member declared in class 'QObject'

标签 c++ qt

我试图返回一个派生自 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/

相关文章:

c++ - 将 void* 转换为 const void**

具有特定要求的 C++ 数组排序/改组

c++ - 将 OpenBLAS 与 Qt Creator 项目链接

c++ - Qt获取信号调用者并逐行从文件中读取

c++ - QT应用程序中如何 "WINAPI::GetLastError"?

qt - QML 组合框样式

c++ - 捕获标准输入而不将字符回显到屏幕

c++ - 调整属性表的错误

c++ - 将位集转换为带符号的

c++ - 驻留在 QThread 中的 QObjects 自动删除了吗?