在下面的程序中,我想从基类派生一个类。在我的代码中,一切似乎都没问题。但是,我在下面的程序中显示错误。请解释错误的原因,以及如何纠正错误。
#include <iostream>
using namespace std;
struct Base
{
int x;
Base(int x_)
{
x=x_;
cout<<"x="<<x<<endl;
}
};
struct Derived: public Base
{
int y;
Derived(int y_)
{
y=y_;
cout<<"y="<<y<<endl;
}
};
int main() {
Base B(1);
Derived D(2);
}
这是错误:
Output:
error: no matching function for call to 'Base::Base()
Note: candidate expects 1 argument, 0 provided
答案 0 :(得分:1)
默认构造函数(即Base
)将用于初始化Derived
的{{1}}子对象,但Base
没有。{/ p>
您可以使用member initializer list指定应使用Base
的哪个构造函数。 e.g。
struct Derived: public Base
{
int y;
Derived(int y_) : Base(y_)
// ~~~~~~~~~~
{
y=y_;
cout<<"y="<<y<<endl;
}
};