Я пытаюсь разработать довольно простой (пока что) класс-оболочку для int , и надеялся перегрузить оператор = для достижения чего-то вроде следующего:
class IntWrapper
{
...
private:
int val;
}
int main ( )
{
IntWrapper a;
int b;
a = 5; // uses overloaded = to implement setter
b = a; // uses overloaded = to implement getter
}
Я понимаю, однако, что это не может быть сделано. Реализация сеттера довольно проста, что-то вроде:
class IntWrapper
{
...
IntWrapper& operator = (int rhs) { this.val = rhs; return *this; }
...
}
Тем не менее, из небольшого количества поисков в Google, я понимаю, что нет способа сделать добытчик таким образом. Насколько я понимаю, это потому, что оператор = может быть переопределен только для присвоения переменной, а поскольку int является примитивным типом, мы не можем переопределить его реализацию по умолчанию =. Это правильно? Если нет, то как мне написать геттер?
Если это правильно, есть ли у кого-нибудь изящные предложения для чего-то подобного? Ближайшее, что я могу найти, это перегрузка оператора преобразования:
class IntWrapper
{
...
operator int( ) { return this.val; }
...
}
int main ( )
{
...
b = (int) a;
...
}
Мне кажется, что это кажется довольно бессмысленным, так как это едва ли лучше, чем простой метод getVal () .
Спасибо за любые предложения!