次のコードを考えてみましょう。
class A{
public:
A(int x){}
};
class B{
public:
B(A a){};
};
int main() {
B b = 5;
return 0;
}
コンパイル中に、コンパイラは次のように不平を言います。
/home/test/main.cpp:80: candidate constructor not viable: no known conversion from 'int' to 'A' for 1st argument
コンストラクターを作成したくありませんB(int)
-コンパイラーが暗黙的にこれint
をA
オブジェクトに変換することを望みます。
編集:
直接初期化は次のように機能します。
B b(5);
代わりに代入演算子を使用することは可能ですか?