C++ 公共成员函数返回内部类?
我正在做一个简单的集合类项目,以熟悉如何实现和编写自己的迭代器。我已经完全充实了Set类,并且有人告诉我,创建迭代器的一个好方法是拥有一个内部类迭代器,这就是我所做的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()返回一个
#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”指针吗?