Я реализую хеш-таблицу, и я написал следующее (фрагмент a) определения класса:
template <typename KEY, typename VAL>
class ExtendibleHashTable {
/* Main hash function used. Initially, the identity function. */
size_t hash(KEY key) {
return key;
}
Я хочу дополнительно добавить публичный метод, который позволяет установить пользовательскую хеш-функцию. Я знаю об указателях функций, поэтому я попробовал что-то вроде этого (внизу, в том же определении класса):
/* Set new hash. */
void set_hash(size_t new_hash(KEY)) {
this -> hash = new_hash;
}
Однако, это не компилируется.
Можете ли вы сказать мне лучший способ достижения этого эффекта? Я посмотрел на заголовок <functional>
, но это не тот ответ, который мне нужен (или, возможно, я не понял его цели).