Операторы перегрузки [] для получения и установки
У меня есть следующий класс:
class risc { // singleton
protected:
static unsigned long registers[8];
public:
unsigned long operator [](int i)
{
return registers[i];
}
};
как вы можете видеть, я применил оператор квадратных скобок для "получения".
Теперь я хотел бы реализовать его для настройки, т.е.: risc[1] = 2
.
Как это можно сделать?
Ответы
Ответ 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)
.