C++ 通过重载运算符[]访问自定义数组包装器中的元素
我正在尝试实现自己的数组包装器。我重载了[]运算符,它返回数组中元素的地址。但是,当我在main中动态分配ArrayWrapper类时,它不起作用 为什么不工作?是因为变量arr是指针吗? 我发现以下错误: 说明资源路径位置类型无法绑定'std::ostream{aka std::basic_ostream}左值到 “标准::基本团队和”Cviceni.cpp/Cviceni/src 25号线C/C++ 问题C++ 通过重载运算符[]访问自定义数组包装器中的元素,c++,arrays,arraylist,operator-overloading,dynamic-memory-allocation,C++,Arrays,Arraylist,Operator Overloading,Dynamic Memory Allocation,我正在尝试实现自己的数组包装器。我重载了[]运算符,它返回数组中元素的地址。但是,当我在main中动态分配ArrayWrapper类时,它不起作用 为什么不工作?是因为变量arr是指针吗? 我发现以下错误: 说明资源路径位置类型无法绑定'std::ostream{aka std::basic_ostream}左值到 “标准::基本团队和”Cviceni.cpp/Cviceni/src 25号线C/C++ 问题 Description资源路径位置类型与“operator不匹配在第二个示例中使用的是
Description资源路径位置类型与“operator不匹配在第二个示例中使用的是指针
arr[2]
不是对ArrayRapper的操作,而是对指针的操作
ArrayWrapper *arr = new ArrayWrapper(250);
try
{
for(int i = 0; i < arr->getSize(); i++)
{
(*arr)[i] = i + 1;
cout << (*arr)[i] << endl;
}
}
ArrayWrapper*arr=新的ArrayWrapper(250);
尝试
{
对于(inti=0;igetSize();i++)
{
(*arr)[i]=i+1;
无法复制将错误消息粘贴到问题本身。只需更改也可以;“我重载了[]运算符,返回数组中元素的地址。”-不,它返回一个引用。如果使用size\t
进行索引和大小设置,则无需检查负数。
ArrayWrapper *arr = new ArrayWrapper(250);
try
{
for(int i = 0; i < arr->getSize(); i++)
{
arr[i] = i + 1;
cout << arr[i] << endl;
}
}
class ArrayWrapper
{
private:
int size;
int *elements;
public:
ArrayWrapper(int n) : size(n), elements(new int[n])
{
for(int i = 0; i < size; i++)
elements[i] = 0;
};
~ArrayWrapper(){delete []elements;};
int& operator[](int i)
{
if(i >= size || i < 0)
{
throw range_error("Out of range");
}
return elements[i];
};
int getSize(){ return size;};
};
ArrayWrapper *arr = new ArrayWrapper(250);
try
{
for(int i = 0; i < arr->getSize(); i++)
{
(*arr)[i] = i + 1;
cout << (*arr)[i] << endl;
}
}