gpt4 book ai didi

c++ - Qt编译错误: C2280: attempting to reference a deleted function

转载 作者:行者123 更新时间:2023-11-30 02:31:40 25 4
gpt4 key购买 nike

我有一个相对简单的类,它包含一个布局,其中包含一些显示为卡片的小部件(标签、lineEdits、pushButtons)。一切正常,直到我尝试添加信号和插槽。下面的头文件编译良好,部分被注释掉,如图所示。

#include <QString>
#include <QObject>
#include <QWidget>

class KMLFile //: public QObject
{
//Q_OBJECT
public:
KMLFile();
~KMLFile();

QString m_originalFilename;
QString m_originalPath;
QString m_proposedFilename;
QString m_propsoedPath;
QString m_coords;
QWidget* trackWidget;

void populate(QString originalFilename, QString originalPath, QString proposedFilename, QString coords);
QString getCoords();
int getLength();

//public slots:
//void changeFilename();

};

当保留这些代码时,我会收到以下错误:

"C:...\qlist.h:425: error: C2280: 'KMLFile::KMLFile(const KMLFile &)': attempting to reference a deleted function

我正在使用 Qt5.3 和 Qt Creator。我尝试清理、运行 qmake 并删除构建文件夹无济于事。我很难过!

感谢任何有关如何解决此问题的见解,以便我可以进步。

最佳答案

QObject 的复制构造函数是私有(private)的 - 或者已删除。

在您的代码中的其他地方,您使用了 KMLFile 的复制构造函数,然后它调用了 QObject 的复制构造函数。

您可以重新实现 KMLFile 的复制构造函数,但最好的解决方案是根本不使用它。

在您的 QList 中,您应该存储指向 KMLFile 对象的指针而不是对象本身,前提是它们的生命周期比列表本身长。或者您可以开始使用 QSharedPointer

关于c++ - Qt编译错误: C2280: attempting to reference a deleted function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37396950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com