是否有关于如何使用嵌套类 iterator 的建议
在C ++中ABC?注意,我还想要一个返回的虚函数
这个类的实例。
更具体地说,这是我的方法:
class ABC {
typedef iterator<forward_iterator_tag, MyType> MyTypeIter;
virtual MyTypeIter *begin() = 0;
};
class Foo : ABC {
MyTypeIter : public ABC::MyTypeIter;
virtual MyTypeIter *begin();
};
ABC::MyTypeIter *Foo::begin()
{
Foo::MyTypeIter *ret;
ret = new Foo::MyTypeIter(...);
return ret;
}
有没有比这更好的方法(例如不使用指针的方法)?
答案 0 :(得分:1)
你有什么问题?嵌套类的行为与顶级类的行为相同,因此您可以像返回任何其他类一样返回其对象。
答案 1 :(得分:0)
看看如何为std :: vector类实现迭代器,例如。
答案 2 :(得分:0)
我更喜欢将迭代器保持在类的内部,并且只显示一个迭代接口。
例如,您可以使用以下方法实现List<>
:
void prepare_iteration() // reset the internal iterator
bool step_iteration() // move internal iterator
DATA_TYPE & read() // return the data by using the iterator
write( DATA_TYPE & ) // update the data by using the iterator
在这个例子中,迭代器可以是一个简单的节点指针,它永远不会暴露给用户。
我发现这种方法比迭代器对象更容易和更安全。
(“更安全”部分需要大量讨论)
我知道这不是您正在寻找的答案,但这只是设计课程的另一种想法。