gpt4 book ai didi

c++ - C++迭代器:实现迭代器类时出错

转载 作者:行者123 更新时间:2023-12-02 09:55:56 25 4
gpt4 key购买 nike

我有一个分配,需要在其中实现一个哈希表类,其中包括一个迭代器类。我已经定义了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;}行中出现以下错误: 在'->' token 之前需要主表达式,但我找不到问题。
谁能提供一些建议?提前致谢!

最佳答案

这个

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++ - C++迭代器:实现迭代器类时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60129776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com