私は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; }
...
}
しかし、私が集めている少しのグーグルから、この方法でゲッターを行う方法はありません。私の理解では、これは=演算子は変数に割り当てるためにのみオーバーライドでき、 intはプリミティブ型であるため、デフォルトの=の実装をオーバーライドできないためです。これは正しいです?そうでない場合は、どうすればゲッターを作成できますか?
それが正しければ、誰かが似たようなものについて何かエレガントな提案がありますか?私が見つけることができる最も近いものは、変換演算子のオーバーロードです:
class IntWrapper
{
...
operator int( ) { return this.val; }
...
}
int main ( )
{
...
b = (int) a;
...
}
単純なgetVal()メソッドよりもほとんど優れていないので、私にはそれはかなり無意味に思えます。
提案をありがとう!