Нет подходящей функции в хеш-таблице

Когда я пытаюсь вызвать функцию создания хеша из следующих строк кода, я получаю сообщение об ошибке «Нет подходящей функции для вызова».

 myHash.create("5", "Data");
checkTest("testSimpleIntHash #1", "Data", myHash.retrieve("5"));

Идея состоит в том, что create получает ключ от класса KeyValuePair, а затем метод хеширует ключ, переходит в этот сегмент и затем вставляет пару ключ-значение. Я считаю, что я получаю эту ошибку, потому что я не выводить в строку. Однако я не могу понять синтаксис для правильного вывода пары ключ-значение в строку с помощью метода create. (Я использую std::list, и мой KeyValuePair класс функционирует нормально)

template<typename T> class HashTable
{
public:

static const unsigned int NUM_BUCKETS = 100000;

HashTable create(const string& key, const T& item)
{
int temp = hash(key);
arr[NUM_BUCKETS].push_back(KeyValuePair<T>(temp, item));
}
private:
int hash(const string& key) const;
//Make an array of linked lists of KeyValuePair objects.
list<KeyValuePair<T>> arr[NUM_BUCKETS];
};

template <typename T>
int HashTable<T>::hash(const string& key) const {
int temp = 0;
for (int i = key.length(); i >= 0; i--) {
temp = (13 * temp + key[i]) % NUM_BUCKETS;
}
return temp;
}

-1

Решение

в create Методом вы можете вернуть ссылку на сам класс.

HashTable& create(const string& key, const T& item)
{
int temp = hash(key);
arr[NUM_BUCKETS].push_back(KeyValuePair<T>(temp, item));
return *this;
}

Но, во всяком случае, вы не используете его.

И вам нужно объявить retrieveметод в вашем классе HashTable:
Например:

string retrieve(const string& input)
{
string result;
//Not sure wath do you pretend to be this method.
//But it will transform your input in your result
return result;
}
0

Другие решения

Других решений пока нет …