Страницы

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

среда, 5 февраля 2020 г.

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

#cpp #классы #перегрузка_операторов


В целом вопрос в заголовке, не знаю что ещё добавить, кроме примера

Перегрузка как член класса:

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];
}


И если перегружать как не член класса, то, получается, нужно передавать экземпляр,
но сначала нужно передавать экземпляр, а потом индекс, или наоборот? Или вообще нельзя?
    


Ответы

Ответ 1



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

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

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