C++ 如何重载下标运算符以使其可交换

C++ 如何重载下标运算符以使其可交换,c++,operator-overloading,C++,Operator Overloading,在以下声明中: int arr[10]; 这两项作业均有效: arr[0] = 0; 1[arr] = 1; 如何实现可交换的运算符[]函数 假设我们有这个类: class Arr { private: int a, b, c, d; public: int& operator[](...) ... } 我们想访问Arr obj==>obj[1]返回b并且1[obj]返回b 我该怎么做?你不能运算符[]需要作为其左操作数类型的成员函数重载,这在整数类型中是不可

在以下声明中:

int arr[10];
这两项作业均有效:

arr[0] = 0;

1[arr] = 1;
如何实现可交换的
运算符[]
函数

假设我们有这个类:

class Arr
{
private:
    int a, b, c, d;
public:
    int& operator[](...)
  ...
}
我们想访问
Arr obj
==>
obj[1]
返回
b
并且
1[obj]
返回
b


我该怎么做?

你不能
运算符[]
需要作为其左操作数类型的成员函数重载,这在整数类型中是不可能的。

确实要这样做吗?或者你为什么想要它<代码> 1 [ARR] < /COD>有效是一个副作用,是在后面的事情,而不是一些所希望的。是的,我想学习如何实现,也许它有用的是,一些Adayayes没有实现为C++类。您无法复制这种行为(幸运的是)。这是它的左撇子操作数类型的主体
?@CătălinaSîrbu“成员函数”的拙劣版本。。。编辑。