Я хочу создать 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());
}
};
}
Я очень озадачен тем, что мне следует добавить дальше. Я перепробовал большинство предложений, которые я могу найти на веб-сайтах, но ни одно из них не работает.
Спасибо за внимание!