C++多维数组运算符

gra*_*olf 6 c++

对于多维数组,有可能以某种方式重载运算符吗?

就像是:

class A {
  ...
  int& operator[][] (const int x, const int y);
  ...
}
Run Code Online (Sandbox Code Playgroud)

jal*_*alf 10

不,这是不可能的.但有两种选择:

您可以operator[]返回一个较小维度的数组(对于3D数组,它将返回一个二维数组,对于一个二维数组,它将返回一维数组;对于一维数组,它将返回一个单独的元素).然后你可以用你想要的语法"将它们串在一起".(arr[x][y][z])

或者,您可以重载operator(),因为这可能需要多个参数.

然后您可以像这样使用它来索引到3D数组,例如: arr(x,y,z)

但是你不能超载[][][][][]作为单个操作员.