为迭代器实现接口

时间:2012-06-23 12:46:57

标签: c++ tdd

我正在编写一个将迭代一组句柄的类。基本上我正在使用一堆实现以下接口的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;
}

然而,我无法弄清楚如何做到这一点。有人可以给我建议吗?

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

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;
}

您怎么看?

0 个答案:

没有答案