0

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

4

1 回答 1

0

我不是专家,但两个函数在给定的代码中具有相同的名称,同时接受相同的参数。这是正常的吗?另外,我假设您的意思是“调用的函数findAddress()”而不是“调用的类findAddress()”。

于 2013-05-19T03:01:13.727 回答