この問題を処理する最善の方法は何ですか? 「x」は定数のままにしたいと思います。
class Foo
{
public:
Foo(int x) : x(x) { }
const int x;
};
void main()
{
Foo a(0), b(1);
b = a; // error C2582: 'operator =' function is unavailable in 'Foo'
}
この問題を処理する最善の方法は何ですか? 「x」は定数のままにしたいと思います。
class Foo
{
public:
Foo(int x) : x(x) { }
const int x;
};
void main()
{
Foo a(0), b(1);
b = a; // error C2582: 'operator =' function is unavailable in 'Foo'
}
プライベートx
にする。int getX()
値を返すなどのパブリック関数を追加します。例:
class Foo
{
public:
Foo(int x) : _x(x) {}
int getX(){return _x;}
private:
int _x;
};
x を変更する唯一の方法は、必要な動作であるコンストラクターを呼び出すことです (と思います)。
コンパイラはoperator=
、その const データ メンバーで何をしたいのかを知る方法がないため、(各データ メンバーを割り当てる) の既定のバージョンを生成しません。これは、独自のoperator=
. したがって、その const データ メンバーで何をしたいかを決定し、それを実行する代入演算子と、代入演算子が行う必要のある他のすべてのことを記述します。