Я реализовывал абстрактный контейнер хеш-таблицы. мой find()
Функция правильно определена и работает нормально, как показано ниже:
template <class HashedObj>
HashedObj& HashTable<HashedObj>::find(const HashedObj &x){
typename list<HashedObj>::iterator itr;
itr = std::find(theList[hash(x)].begin(), theList[hash(x)].end(), x);
if(itr == theList[hash(x)].end())
return ITEM_NOT_FOUND;
else
return *itr;
}
Тем не менее, я хочу определить другую функцию под названием findAddress()
это возвращает itr
(итератор) вместо *itr
, Мой код:
typedef list<HashedObj>::iterator iterator;
template <class HashedObj>
iterator HashTable<HashedObj>::find(const HashedObj &x){
return std::find(theList[hash(x)].begin(), theList[hash(x)].end(), x);
}
Выше будет жаловаться, что:
type std::list<HashedObj, std::allocator<_CharT> > is not derived from type
HashedTable<HashedObj>.
В основном я хочу вернуть тип итератора, который был определен std
до.
Я не эксперт, но обе функции имеют одно и то же имя в указанном коде, принимая один и тот же параметр. Это нормально? Кроме того, я предполагаю, что вы имеете в виду «функцию под названием findAddress()
«вместо» класс называется findAddress()
».
Других решений пока нет …