Jas*_*ang 0 c++ inheritance constructor class c++11
当我试图为一个继承的类创建多个构造函数时,我抛出一个错误:没有匹配的函数调用A :: A()。我的代码如下所示:
class A{
public:
int a;
int b;
A(int i, int k) : a(i), b(k){
};
};
class B : public A{
public:
B(){
};
B(int i, int k) : A(i, k){
};
};
Run Code Online (Sandbox Code Playgroud)
B() {}
Run Code Online (Sandbox Code Playgroud)
相当于
B() : A() {}
Run Code Online (Sandbox Code Playgroud)
由于A没有默认的构造函数,因此是编译时错误。
您可以通过以下方法修复它:
A或添加默认构造函数通过将B的默认构造函数的实现更改为使用的现有构造函数A。
B() : A(0, 0) {}
Run Code Online (Sandbox Code Playgroud)