C++ C++;如何从迭代器(内部类)访问集合成员变量?这有意义吗?
我试图编写类似于std::vector的类,它将包含一个迭代器作为内部类。对于迭代器的一些成员函数,我想从向量类访问变量。例如,当重载运算符++时,我想检查迭代器的索引是否超过向量的大小(如果是,则抛出std::out of_range()。我已经基于实现了对外部类变量的访问。但出于某种原因,编译器向我抛出以下错误: 错误C2440:'':无法从“初始值设定项列表”转换为“向量::迭代器” 以下是复制此问题的代码的最低版本:C++ C++;如何从迭代器(内部类)访问集合成员变量?这有意义吗?,c++,data-structures,C++,Data Structures,我试图编写类似于std::vector的类,它将包含一个迭代器作为内部类。对于迭代器的一些成员函数,我想从向量类访问变量。例如,当重载运算符++时,我想检查迭代器的索引是否超过向量的大小(如果是,则抛出std::out of_range()。我已经基于实现了对外部类变量的访问。但出于某种原因,编译器向我抛出以下错误: 错误C2440:'':无法从“初始值设定项列表”转换为“向量::迭代器” 以下是复制此问题的代码的最低版本: template <typename Type> clas
template <typename Type>
class Vector
{
public:
class Iterator;
Vector() : size(0), capacity(0), data(nullptr) {}
Iterator begin()
{
return Iterator(this, 0);
}
private:
size_t size, capacity;
Type* data;
};
template <typename Type>
class Vector<Type>::Iterator
{
public:
Iterator(Vector& vectorRef, size_t index) : vectorRef(vectorRef), index(index) {}
private:
size_t index;
Vector& vectorRef;
};
int main()
{
Vector<int> vec;
vec.begin();
return 0;
}
模板
类向量
{
公众:
类迭代器;
Vector():大小(0)、容量(0)、数据(nullptr){
迭代器begin()
{
返回迭代器(this,0);
}
私人:
大小、容量;
类型*数据;
};
模板
类向量::迭代器
{
公众:
迭代器(Vector&vectorRef,size_t index):vectorRef(vectorRef),index(index){}
私人:
尺寸指数;
向量&vectorRef;
};
int main()
{
向量向量机;
vec.begin();
返回0;
}
这是什么原因?像这样传递对向量类的引用有意义吗?或者有更好的方法吗?这是因为
这个有类型向量*
或者常量向量*
,但是你的构造函数接受的是向量&
,所以找不到匹配的构造函数
尝试使用Vector(*this,0)
谢谢。有时我仍然混淆了指针和引用的用法。取消引用“this”并没有解决这个问题,但我将vectoref的类型更改为Vector*,至少它正在编译。现在来测试一下,好的。再次测试它,它也可以像您建议的那样取消引用“this”。再次感谢你。