我正在尝试围绕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; }
...
}
但是,从我收集的一些谷歌搜索来看,没有办法以这种方式做吸气剂。我的理解是,这是因为 = 运算符只能被覆盖以分配给变量,并且由于int是原始类型,我们不能覆盖其默认的 = 实现。这个对吗?如果没有,我该如何编写吸气剂?
如果这是正确的,是否有人对类似的东西有任何优雅的建议?关于我能找到的最接近的是重载转换运算符:
class IntWrapper
{
...
operator int( ) { return this.val; }
...
}
int main ( )
{
...
b = (int) a;
...
}
尽管对我来说这似乎毫无意义,因为它几乎不比简单的getVal()方法好。
感谢您的任何建议!