声明可以迭代的接口

时间:2013-05-17 09:32:19

标签: c++ iterator

我创建了一个接口类,用于定义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;
};

我不确定这是否可能,但我至少想知道为什么,如果情况确实如此。

0 个答案:

没有答案