Создать unordered_map с пользовательским объектом в качестве ключа - PullRequest
0 голосов
/ 23 марта 2019

Я хочу создать std::unordered_map с Node в качестве ключа. У меня уже перегружены операторы == и <. Я также определил хэш-функцию. Тем не менее, это дает мне ошибку:

C2280: std::hash<_Kty>::hash(const std::hash<_Kty> &): attempting to reference a deleted function

Вот мой код для Node класса:

#include "Node.h"

Node::Node() {
  word = Word();
}

Node::Node(Word input_word) : word(input_word) {}

Node::Node(const Node& other) {
  word = other.word;
  connection = other.connection;
}

Node::~Node() {
}

bool Node::operator<(const Node& other) {
  return (word < other.get_word());
}

bool Node::operator==(const Node& other) {
  if (word == other.word) {
    if (connection.size() == other.connection.size()) {
      for (unsigned int i = 0; i < connection.size(); i++) {
        if (connection[i] != other.connection[i]) {
          return false;
        }
      }
      return true;
    } else {
      return false;
    }
  } else {
    return false;
  }
}

Word Node::get_word() const {
  return word;
}

int Node::add_connection(Edge* input_node) {
  connection.push_back(input_node);
  return SUCCESS;
}

vector<Edge*> Node::retrieve_connection() const{
  return connection;
}


namespace std {
  template <> struct hash<Node> {
    size_t operator()(const Node& other) const {
      return hash<string>()(other.get_word().get_string()) ^
             hash<int>()(other.retrieve_connection().size());
    }
  };
}

Я очень озадачен тем, что мне следует добавить дальше. Я перепробовал большинство предложений, которые я могу найти на веб-сайтах, но ни одно из них не работает.

Спасибо за внимание!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...