【发布时间】:2016-03-31 10:28:08
【问题描述】:
我有从 QObject 交付的自定义类:
class Client : public QObject
{
Q_OBJECT
friend class Server;
public:
Client(QTcpSocket *socket, QObject *parent = 0);
private:
QTcpSocket *mSocket;
};
并尝试将其添加到我的列表(QList)中
auto socket = mServer->nextPendingConnection();
Client client(socket);
mClients.append(client);
接下来输出:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:521:需要来自 'void QList::append(const T&) [with T = Client]'
...
/usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:372:错误:使用 删除函数'Client::Client(const Client&)' if (QTypeInfo::isLarge || QTypeInfo::isStatic) n->v = new T(t);
如何正确地将我的对象添加到列表中?
【问题讨论】:
-
都是Client类的代码吗?这很奇怪,因为没有删除的复制构造函数,也没有没有复制构造函数的成员。
-
是的,现在都是代码。当然,它在原型的.cpp文件中都有实现。
-
我可以不使用复制构造函数而只移动列表中的对象吗?
-
QObject 不应被复制,而是将其设为智能指针列表(例如 shared_ptrs/QSharedPointers)。