Есть ли хорошая практика в выборе ключа для QMap / map

0

Мне нужно использовать QMap<QTcpSocket*, QString> чтобы сохранить имя каждого соединения.

Мне сказали, что использование сложного объекта, такого как QTcpSocket, в качестве ключа не является идеальным, так как путь сопоставляет ключ, он может думать, что есть дубликат, пока это не так.

Поэтому мне было бы лучше использовать QMap<QString, QTcpSocket*>.

Мне не удалось найти информацию о "хорошей практике". Есть ли основания для этого? Являются ли некоторые объекты более/менее рекомендуемыми, чем другие, чтобы использовать их в качестве ключей?

  • 2
    Если вы используете указатели на объекты в качестве ключей, невозможно иметь дубликаты, потому что невозможно иметь два разных объекта с одинаковым адресом. Так что QMap<QTcpSocket*, QString> выглядит хорошо для меня.
  • 0
    Было бы иначе, если бы не указатель?
Показать ещё 1 комментарий
Теги:
qt
qmap
map

1 ответ

3

Как отметил @vahancho, использование указателя на объект в этом случае не является проблемой.

Однако, поскольку вы хотите сохранить имя каждого соединения, считайте, что QTcpSocket является QObject.

Имея это в виду, вы можете вызвать функцию setObjectName (const QString & name), чтобы назвать объект и функцию objectName(), чтобы получить его, как описано в документации для QObject.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню