次のクラスがあります。
class risc { // singleton
protected:
static unsigned long registers[8];
public:
unsigned long operator [](int i)
{
return registers[i];
}
};
ご覧のとおり、「取得」のために角括弧演算子を実装しました。
これで、設定用に実装したい、つまり:risc[1] = 2
。
どうすればできますか?
これを試して:
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];}
};
クラスのユーザーが値の設定に使用するように、_operator[]
_から参照を返す必要があります。したがって、関数シグネチャはunsigned long& operator [](int i)
になります。