Перегрузка C ++ - PullRequest
       63

Перегрузка C ++

0 голосов
/ 21 июня 2020

Я определяю класс Integer в своем домашнем задании

class Integer
{
    int value;
public:
    Integer() {}
    Integer(int val) { this->value = val; }
    void operator =(int val) { this->value = val; }
};

int main(void)
{
    Integer a;
    Integer* p = new Integer[2];
    a = 1;
    p[a]; // <-- I want to define this
    return 0;
}

Итак, как мне определить p[a]?

Извините, мой английский sh не подходит.

1 Ответ

1 голос
/ 21 июня 2020

Оператор подстрочного индекса может быть перегружен только как функция-член, а не как бесплатная функция.

Таким образом, нет способа определить перегрузку оператора подстрочного индекса для неклассовых типов, таких как Integer*.

Что вы можете сделать, так это сделать свой класс неявно конвертируемым в фундаментальный целочисленный тип. Таким образом, вы будете использовать обычный оператор индексации указателя, который принимает указатель и целое число. Это может быть достигнуто путем определения оператора преобразования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...