1

我正在将一个简单的 Set 类作为一个项目来熟悉实现和编写我自己的迭代器。我已经完全充实了 Set 类,并且有人告诉我,创建 Iterator 的一个好方法是拥有一个内部类 Iterator,这就是我所做的。

#include "homemadeSet.h"
Set::Set{
//etc
}

Set::Iterator::Iterator(){}

Set::Iterator Set::begin(){

    //return Iterator
}

这是我的代码的一个非常截断的部分。我试图让集合的公共成员函数 begin() 返回一个内部类迭代器。

编辑:对不起,我的问题是返回内部类的语法是什么?

感谢您的回答,有时最简单的解决方案会让您望而却步^^。

4

2 回答 2

2

只需Set::Iterator使用适当的构造函数创建一个类型的对象,然后返回它。例如,如果Iterator

public:
    Iterator();
    explicit Iterator(InternalStuff*);

你可以做

Set::Iterator Set::begin() const {
    return Iterator(mFirstElement);
}
于 2013-03-05T03:22:44.323 回答
1

内部类在创建或返回它们的方式上与顶级类没有区别。外部类的名称成为内部类的完全限定名称的一部分,因此您需要使用范围解析运算符::来构建名称。

Set::Iterator Set::begin(){
    Set::Iterator res;
    // prepare the Iterator, for example
    // res.setPosition(0);
    return res;
}
于 2013-03-05T03:22:56.347 回答