Как я могу перегрузить оператор индекса, чтобы быть коммутативным - PullRequest
1 голос
/ 31 марта 2020

В следующем объявлении:

int arr[10];

оба эти назначения действительны:

arr[0] = 0;

1[arr] = 1;

Как я могу реализовать функцию operator[], чтобы она была коммутативной?

Предположим, у нас есть этот класс:

class Arr
{
private:
    int a, b, c, d;
public:
    int& operator[](...)
  ...
}

И мы хотим получить доступ Arr obj; ==> obj[1] возвращает b, а также 1[obj] возвращает b

Как я могу это сделать?

1 Ответ

2 голосов
/ 31 марта 2020

Вы не можете. operator[] необходимо перегрузить как функцию-член типа его левого операнда, что невозможно для целочисленных типов.

...