gpt4 book ai didi

c++ - 运算符 [][] 重载

转载 作者:行者123 更新时间:2023-12-05 06:51:07 26 4
gpt4 key购买 nike

是否可以重载 [] 运算符两次?允许这样的事情: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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com