0

我正在编写一个将遍历一组句柄的类。基本上我正在处理一堆实现以下接口的C函数:

SomeHandle getFirst(ParentHandle);
SomeHandle getNext(SomeHandle);

这是我的迭代器的接口及其部分实现。我需要一个接口,以便为了 TDD 的目的模拟这个迭代器。

template<class HandleT>
class IHandleIterator
{
public: 
    virtual void operator++() = 0;
    virtual const HandleT& operator*() const = 0;
};

template<class HandleT>
class HandleIterator : public IHandleIterator<HandleT>
{
public:
    // used by something.end()
    HandleIterator() : _isLast(true)
    {
    }

    // updates _isLast when the end is reached        
    virtual void operator++()
    {
    }

    virtual const HandleT& operator*() const
    {
        return _currentHandle;
    }

protected:
    HandleT _currentHandle;
    bool _isLast;
};

我想要做的是将 operator!= 添加到接口中,以便在我迭代结束时进行测试,如下所示:

for(IHandleIterator i=something.begin(); i!=seomething.end(); i++)
{
    *i;
}

但是我无法弄清楚如何做到这一点。谁能给我建议?

如果我找不到涉及 operator!= 的解决方案,那么我想知道这是否是一个好方法:

class IHandleIterator
{
public: 
    virtual void operator++() = 0;
    virtual const HandleT& operator*() const = 0;
    virtual bool isLast const = 0;
};

for(IHandleIterator i=something.begin(); !i.isLast(); i++)
{
    *i;
}

你怎么看?

4

0 回答 0