Страницы

Поиск по вопросам

понедельник, 8 апреля 2019 г.

Можно ли перегрузить опреатор [] как не член класса?

В целом вопрос в заголовке, не знаю что ещё добавить, кроме примера
Перегрузка как член класса:
class A { public: int* some_arr;
int operator [](uint_t i) { return this->some_arr[i]; } }
Перегрузка, как я себе представляю, как не член класса:
class A { // ... public: int* some_arr; // ... }
int operator [](const A& a, uint_t i) // либо поменять аргументы местами, поэтому-то и не уверен { return a.some_arr[i]; }
И если перегружать как не член класса, то, получается, нужно передавать экземпляр, но сначала нужно передавать экземпляр, а потом индекс, или наоборот? Или вообще нельзя?


Ответ

Нет:
16.5.5 Subscripting [over.sub] 1 operator[] shall be a non-static member function with exactly one parameter.

Комментариев нет:

Отправить комментарий