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

C++ 公共成员函数返回内部类?,c++,return,inner-classes,C++,Return,Inner Classes,我正在做一个简单的集合类项目,以熟悉如何实现和编写自己的迭代器。我已经完全充实了Set类,并且有人告诉我,创建迭代器的一个好方法是拥有一个内部类迭代器,这就是我所做的 #include "homemadeSet.h" Set::Set{ //etc } Set::Iterator::Iterator(){} Set::Iterator Set::begin(){ //return Iterator } 这是我代码中真正被截断的部分。我试图让集合的公共成员函数begin()返回一个

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

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

Set::Iterator::Iterator(){}

Set::Iterator Set::begin(){

    //return Iterator
}
这是我代码中真正被截断的部分。我试图让集合的公共成员函数begin()返回一个内部类迭代器

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


感谢您的回答,有时候最简单的解决方案是您找不到的。

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

public:
    Iterator();
    explicit Iterator(InternalStuff*);
你可以

Set::Iterator Set::begin() const {
    return Iterator(mFirstElement);
}

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

Set::Iterator Set::begin(){
    Set::Iterator res;
    // prepare the Iterator, for example
    // res.setPosition(0);
    return res;
}

你到底在挣扎什么?只要Set::Iterator公开,它就应该可以工作。到目前为止,听起来是个好主意。有什么问题吗?你是在问“this”指针吗?