我正在实现一个抽象的哈希表容器。我的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
之前定义的迭代器类型。