我创建了一个接口类,它为子指针定义了一个队列。
class IChildQueue
{
public:
IChildQueue(void) {};
virtual ~IChildQueue(void) {};
public:
virtual bool add(ChildProcess *oChildProcess) = 0;
virtual void remove(ChildProcess *oChildProcess) = 0;
virtual void clear(void) = 0;
virtual unsigned int size(void) = 0;
virtual const IChildQueueIterator &begin(void) = 0; <-- this is the problem
};
现在我想在接口中添加一个迭代器,这样客户端就可以在不弄乱队列本身的情况下迭代孩子。由于我对 C++ 的了解不是很好,所以我没能成功。
我的目标是我可以在 for 循环中方便地使用迭代器,因此它应该具有自动存储持续时间,并且它应该充当底层对象的代理。像这样的IE:
for(Iterator it = master.begin(); it != it.end(); ++it)
it->childfunction(); <-- by overloading the -> operator.
不,出于各种原因,我不想使用 boost。
到目前为止,我的迭代器看起来像这样:
class IChildQueueIterator
{
public:
IChildQueueIterator(IChildQueue *pQueue);
virtual ~IChildQueueIterator() {};
virtual ChildProcess *operator->() const = 0;
virtual bool operator==(IChildQueueIterator const &lhs) = 0;
virtual bool operator!=(IChildQueueIterator const &lhs) = 0;
virtual ChildProcess &operator++() = 0;
virtual const ChildProcess operator++(int) = 0;
virtual bool end(void) = 0;
};
我不确定这是否可能,但我至少想知道为什么,如果确实如此。