我正在开发一个简单的Set类作为一个项目,以熟悉实现和编写我自己的迭代器。我已经完全充实了Set类,并且我被告知创建Iterator的一个好方法是使用内部类Iterator,这就是我所做的。
#include "homemadeSet.h"
Set::Set{
//etc
}
Set::Iterator::Iterator(){}
Set::Iterator Set::begin(){
//return Iterator
}
这是我的代码中一个非常截断的部分。我试图让set的公共成员函数begin()返回一个内部类Iterator。
编辑:对不起,我的问题是返回内部类的语法是什么?
感谢您的回答,有时最简单的解决方案会让您失望^^。
答案 0 :(得分:2)
使用适当的构造函数创建一个Set::Iterator
类型的对象,然后返回它。例如,如果Iterator
有
public:
Iterator();
explicit Iterator(InternalStuff*);
你可以做到
Set::Iterator Set::begin() const {
return Iterator(mFirstElement);
}
答案 1 :(得分:1)
内部类在创建或返回它们的方式上与顶级类没有区别。外部类的名称成为内部类的完全限定名称的一部分,因此您需要使用范围解析运算符::
来构建名称。
Set::Iterator Set::begin(){
Set::Iterator res;
// prepare the Iterator, for example
// res.setPosition(0);
return res;
}