C++ 迭代器:实现迭代器类时出错
Posted
技术标签:
【中文标题】C++ 迭代器:实现迭代器类时出错【英文标题】:C++ iterators : error on implementing an iterator class 【发布时间】:2020-02-08 18:17:45 【问题描述】:我有一个任务,我需要实现一个哈希表类,包括一个迭代器类。我已经定义了类 Hash:
template <class KeyType, class ValueType>
class Hash
class Pair
public:
Pair(KeyType a_key) :
m_key(a_key)
Pair(KeyType a_key, ValueType a_val) :
m_key(a_key), m_val(a_val)
KeyType m_key;
ValueType m_val;
;
public:
typedef size_t (*HashFunc)(KeyType);
class Iterator
friend class Pair;
public:
//Iterator()
//Iterator(const Iterator& a_other)
//Iterator& operator=(const Iterator& a_other)
//~Iterator
void operator++();
ValueType& operator*() return *m_itr->m_val;
private:
typedef typename std::list<Pair*>::iterator m_itr;
size_t m_hashIndex;
;
Hash(size_t a_size, HashFunc a_func);
~Hash();
private:
HashFunc m_hashFunc;
size_t m_size;
std::list<Pair*>* m_hash;
;
在ValueType& operator*() return *m_itr->m_val;
行中,我收到以下错误:expected primary-expression before ‘->’ token 我找不到问题所在。
任何人都可以提供一些建议吗?提前致谢!
【问题讨论】:
【参考方案1】:这个
typedef typename std::list<Pair*>::iterator m_itr;
是一个typedef
,它为std::list<Pair*>::iterator
声明一个别名类型,称为m_itr
。我想你想拥有这种类型的成员:
typedef typename std::list<Pair*>::iterator itr_type;
itr_type m_iter;
【讨论】:
以上是关于C++ 迭代器:实现迭代器类时出错的主要内容,如果未能解决你的问题,请参考以下文章