我只需要使用QMap<QTcpSocket*, QString>
来保留每个连接的名称。
有人告诉我,使用像 QTcpSocket 这样的复杂对象作为键并不理想,因为 map 比较键的方式,它可能会认为存在重复,而事实并非如此。
所以我显然会更好地使用QMap<QString, QTcpSocket*>
。
我无法找到关于它的“良好实践”信息。这有什么根据吗?是否比其他对象更多/更少推荐用作键?
正如@vahancho 提到的,在这种情况下使用指向对象的指针不是问题。
但是,由于您希望保留每个连接的名称,请考虑 QTcpSocket 是一个 QObject。
考虑到这一点,您可以调用函数setObjectName( const QString & name)来命名对象并调用函数objectName()来检索它,如QObject 文档中所述。