Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 找到“的根本原因”;无法访问类';QObject'&引用;_C++_Qt_Copy Constructor_Visual C++ - Fatal编程技术网

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 &)'