次のクラス宣言を使用しています。
class A {
public:
A(int, float);
A(const A&);
};
class B {
public:
B(A&);
protected:
A a;
};
また、Bに対して次の定義を設定しました。
B::B(A &a) {
this->a = a;
}
問題は、B
コンストラクターの定義にエラーがあり、が存在することを示していることですNo matching function for call to A::A()
。
Bコンストラクターが新しいAを作成しようとするのはなぜですか?
前の手順が必要な場合、参照を使用してコピーコンストラクターを呼び出さないのはなぜですか?