Мне нужно использовать QMap<QTcpSocket*, QString>
чтобы сохранить имя каждого соединения.
Мне сказали, что использование сложного объекта, такого как QTcpSocket, в качестве ключа не является идеальным, так как путь сопоставляет ключ, он может думать, что есть дубликат, пока это не так.
Поэтому мне было бы лучше использовать QMap<QString, QTcpSocket*>
.
Мне не удалось найти информацию о "хорошей практике". Есть ли основания для этого? Являются ли некоторые объекты более/менее рекомендуемыми, чем другие, чтобы использовать их в качестве ключей?
Как отметил @vahancho, использование указателя на объект в этом случае не является проблемой.
Однако, поскольку вы хотите сохранить имя каждого соединения, считайте, что QTcpSocket является QObject.
Имея это в виду, вы можете вызвать функцию setObjectName (const QString & name), чтобы назвать объект и функцию objectName(), чтобы получить его, как описано в документации для QObject.
QMap<QTcpSocket*, QString>
выглядит хорошо для меня.