[英]Class inherited from class without default constructor
现在我有一个继承自B
类的A
类,而B
没有默认构造函数。 我正在尝试为A
创建一个构造函数,该构造函数与B
的构造函数具有完全相同的参数
struct B {
int n;
B(int i) : n(i) {}
};
struct A : B {
A(int i) {
// ...
}
};
但我得到:
error: no matching function for call to ‘B::B()’
note: candidates are: B::B(int)
我将如何修复此错误?
构造函数应如下所示:
A(int i) : B(i) {}
冒号后面的位表示“使用其int
构造函数初始化此对象的 B 基类子对象,值为 i”。
我猜您没有为 B 提供初始化程序,因此默认情况下编译器会尝试使用不存在的 no-args 构造函数初始化它。
您需要通过类的初始值设定项列表调用基本构造函数。
例子:
class C : public B
{
public:
C(int x) : B(x)
{
}
};
当您不显式初始化 B 时,它将尝试使用没有参数的默认构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.