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