我创建了一个接口类,用于定义Childpointers的队列。
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循环中方便地使用迭代器,因此它应该具有自动存储持续时间,并且它应该充当底层对象的代理。即像这样:
for(Iterator it = master.begin(); it != it.end(); ++it)
it->childfunction(); <-- by overloading the -> operator.
不,我不想出于各种原因使用提升。
到目前为止,我的Iterator看起来像这样:
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;
};
我不确定这是否可能,但我至少想知道为什么,如果情况确实如此。