我正在使用以下类声明:
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?
如果需要上一步,为什么不使用引用调用复制构造函数?
最佳答案
我假设您的 B
有一个需要构造的 A
。在您当前的构造函数中,您没有明确指定要使用的 A
构造函数。因此它会尝试不存在的 A
的默认构造函数:
也许您打算用引用构造 B 的 A?
class B {
private:
A _a;
public:
B(A& a) : _a(a) {}
};
关于c++ - 构造函数参数中的引用调用引用的默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809270/