公共成员函数返回内部类?

时间:2013-03-05 03:11:53

标签: c++ return inner-classes

我正在开发一个简单的Set类作为一个项目,以熟悉实现和编写我自己的迭代器。我已经完全充实了Set类,并且我被告知创建Iterator的一个好方法是使用内部类Iterator,这就是我所做的。

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

Set::Iterator::Iterator(){}

Set::Iterator Set::begin(){

    //return Iterator
}

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

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

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

2 个答案:

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