C++ 找到“的根本原因”;无法访问类';QObject'&引用;
我理解为什么我会得到一个C++ 找到“的根本原因”;无法访问类';QObject'&引用;,c++,qt,copy-constructor,visual-c++,C++,Qt,Copy Constructor,Visual C++,我理解为什么我会得到一个C2248:“QObject::QObject”:无法访问在类“QObject”中声明的私有成员。Qt对象不可复制,如下所述: 问题是,编译器消息始终指示类的最后一行(关闭}): class MyQObject : public QObject { Q_OBJECT .... }; <-- error line 我想知道为什么会生成复制构造函数。我想到了一个想法,我正在使用支持DBus的Qt版本,这可能是原因吗?检测根本原因的最简单
C2248:“QObject::QObject”:无法访问在类“QObject”中声明的私有成员
。Qt对象不可复制,如下所述:
问题是,编译器消息始终指示类的最后一行(关闭}
):
class MyQObject : public QObject {
Q_OBJECT
....
}; <-- error line
我想知道为什么会生成复制构造函数。我想到了一个想法,我正在使用支持DBus的Qt版本,这可能是原因吗?检测根本原因的最简单解决方案是将您的拷贝也设置为私有。(或已删除,但在VS2010中还不可能)。这将抑制自动生成的复制ctor,该ctor是错误的来源。如果您没有显式复制
MyObject
,但不断收到此错误消息,则您与MyObject
一起使用的某个东西将代表您进行复制
最可能的罪魁祸首是容器类之一,例如QList
,QVector
,等等
有关更多信息以及可能使用的任何容器的特定类文档,请阅读。所有容器都有其元素的要求,例如必须有默认构造函数,必须是可分配的,等等。这就是我认为您的问题所在。VS的哪个版本?Mine(VS2010)在使用行上报告错误,然后在报告的其他行上说“请参见
QObject::QObject
(指向QObject
)的声明”。您是否错过了代码>在您的类定义结束后
}?请幽默地告诉我们并发布整个错误消息,以及您的visual studio版本。请注意消息的来源-VS IDE中的问题列表不是您想要的。您希望在原始编译器输出中查看它。至少在Qt Creator上,当您单击一个问题时,问题列表将展开,让您更深入地了解发生了什么。发布一些(最好是最小的)代码来重现问题。
'QObject::QObject'
C:\Qt\5.1.0-32\qtbase\include\QtCore/qobject.h(115) : see declaration of 'QObject'
This diagnostic occurred in the compiler generated function 'MyQObject ::MyQObject (const MyQObject &)'