问题
I have the following class:
class risc { // singleton
protected:
static unsigned long registers[8];
public:
unsigned long operator [](int i)
{
return registers[i];
}
};
as you can see I've implemented the square brackets operator for "getting".
Now I would like to implement it for setting, i.e.: risc[1] = 2
.
How can it be done?
回答1:
Try this:
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:
You need to return a reference from your operator[]
so that the user of the class use it for setting the value. So the function signature would be unsigned long& operator [](int i)
.
来源:https://stackoverflow.com/questions/11066564/overload-bracket-operators-to-get-and-set