我正在尝试开发一个非常简单(目前)的包装类
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
}
不过,我想这是办不到的。实现setter非常简单,比如:
class IntWrapper
{
...
IntWrapper& operator = (int rhs) { this.val = rhs; return *this; }
...
}
然而,从我收集的一点谷歌信息来看,没有办法用这种方式做一个getter。我的理解是,这是因为=运算符只能重写为
到
一个变数,自从
int
是一个基元类型,我们不能重写它的默认实现=。这是对的吗?如果没有,我该怎么写呢?
如果这是正确的,有人对类似的东西有什么优雅的建议吗?我能找到的最接近的是重载转换运算符:
class IntWrapper
{
...
operator int( ) { return this.val; }
...
}
int main ( )
{
...
b = (int) a;
...
}
但对我来说,这似乎毫无意义,因为它只不过是一个简单的
GETVAL()
方法。
谢谢你的建议!