是否可以重载 []
运算符两次?允许这样的事情:function[3][3]
(就像在二维数组中一样)。
如果可能的话,我想看看一些示例代码。
最佳答案
您可以重载 operator[]
以返回一个对象,您可以在该对象上再次使用 operator[]
以获得结果。
class ArrayOfArrays {
public:
ArrayOfArrays() {
_arrayofarrays = new int*[10];
for(int i = 0; i < 10; ++i)
_arrayofarrays[i] = new int[10];
}
class Proxy {
public:
Proxy(int* _array) : _array(_array) { }
int operator[](int index) {
return _array[index];
}
private:
int* _array;
};
Proxy operator[](int index) {
return Proxy(_arrayofarrays[index]);
}
private:
int** _arrayofarrays;
};
然后你可以像这样使用它:
ArrayOfArrays aoa;
aoa[3][5];
这只是一个简单的例子,你想添加一堆边界检查和东西,但你明白了。
关于c++ - 运算符 [][] 重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66255547/