1

我创建了一个接口类,它为子指针定义了一个队列。

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

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

4

0 回答 0