Подтвердить что ты не робот

Операторы перегрузки [] для получения и установки

У меня есть следующий класс:

class risc { // singleton
    protected:
        static unsigned long registers[8];

    public:
        unsigned long operator [](int i)
        {
            return registers[i];
        }
};

как вы можете видеть, я применил оператор квадратных скобок для "получения".
Теперь я хотел бы реализовать его для настройки, т.е.: risc[1] = 2.

Как это можно сделать?

4b9b3361

Ответ 1

Попробуйте следующее:

class risc { // singleton
protected:
    static unsigned long registers[8];

public:
    unsigned long operator [](int i) const    {return registers[i];}
    unsigned long & operator [](int i) {return registers[i];}
};

Ответ 2

Вам нужно вернуть ссылку из operator[], чтобы пользователь класса использовал ее для установки значения. Таким образом, сигнатура функции будет unsigned long& operator [](int i).