我只需要使用QMap<QTcpSocket*, QString>
来保留每个连接的名称。
有人告诉我,使用复杂的对象(例如QTcpSocket)作为键并不理想,因为映射图比较键的方式可能会认为有重复项,而并非如此。
因此,显然使用QMap<QString, QTcpSocket*>
会更好。
我找不到关于它的“良好实践”信息。
这有什么根据吗?是否推荐比其他对象更多/更少的对象用作键?
最佳答案
正如@vahancho提到的,在这种情况下使用指向对象的指针不是问题。
但是,由于要保留每个连接的名称,因此请考虑QTcpSocket是QObject。
考虑到这一点,您可以调用函数setObjectName(const QString&name)来命名对象,并调用objectName()来检索对象,如documentation for QObject中所述。
关于c++ - 为QMap/map选择 key 是否有好的做法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25386592/