Я пытаюсь разработать довольно простой (на данный момент) класс-оболочку вокруг 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, нет никакого способа сделать геттер таким образом. Насколько я понимаю, это связано с тем, что оператор = может быть переопределен только для назначения переменной to, а поскольку int является примитивным типом, мы не можем переопределить его реализацию = по умолчанию. Это верно? Если нет, то как мне написать геттер?
Если это правильно, есть ли у кого-нибудь элегантные предложения для чего-то подобного? Ближайшее, что я могу найти, это перегрузка оператора преобразования:
class IntWrapper
{
...
operator int( ) { return this.val; }
...
}
int main ( )
{
...
b = (int) a;
...
}
Однако мне это кажется довольно бессмысленным, так как это едва ли лучше, чем простой метод getVal().
Спасибо за любые предложения!