【发布时间】:2013-10-09 10:03:39
【问题描述】:
我明白为什么我会收到 C2248: 'QObject::QObject' : cannot access private member declared in class 'QObject' 。 Qt 对象不可复制,如下所述:
问题是,编译器消息总是指出类的最后一行(关闭}):
class MyQObject : public QObject {
Q_OBJECT
....
}; <-- error line
根本原因在其他地方,即。复制类的位置(其他文件,代码中的一些不同行)。这有时很难发现! 问题:有没有办法找到错误的真正原因所在的行
备注:请注意,在您标记此副本之前。问题是关于找到根本原因,而不是像其他问题那样如何解决它。
--- 编辑 1 ---
很好的提示 Kuba 等人。是VS2010,在Qt Creator 2.8.0中编译
'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 &)'
我想知道为什么会生成一个复制构造函数。我突然想到一个想法,我正在使用支持 DBus 的 Qt 版本,这可能是原因吗?
【问题讨论】:
-
VS 哪个版本?我的(VS2010)在使用行报告错误,然后在报告的其他行上说“请参阅
QObject::QObject的声明”(指向QObject)。 -
你不会错过类定义的右括号
}后面的;吗? -
幽默我们并发布整个错误消息,以及您的 Visual Studio 版本。请注意从何处获取消息 - VS IDE 的问题列表不是您想要的。您想在原始编译器输出中查看它。至少在 Qt Creator 上,当您单击某个问题时,问题列表会展开,让您更深入地了解发生了什么。
-
发布一些(最好是最少的)代码来重现问题。
标签: c++ qt copy-constructor visual-c++