我正在实现一个抽象的哈希表容器。我的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
定义的迭代器类型。
答案 0 :(得分:0)
我不是专家,但两个函数在给定的代码中具有相同的名称,同时接受相同的参数。这是正常的吗?另外,我假设您的意思是“称为findAddress()
的函数”而不是“名为findAddress()
的类”。