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

问题描述 投票:0回答:1

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

c++ stl iterator
1个回答
1
投票

typedef typename std::list<Pair*>::iterator m_itr;

是一个typedef,它声明std::list<Pair*>::iterator的别名类型。我想您想拥有该类型的成员:

m_itr
© www.soinside.com 2019 - 2024. All rights reserved.