C ++继承:错误:候选者需要1个参数,0提供

时间:2017-11-08 01:32:47

标签: c++ c++11 inheritance

在下面的程序中,我想从基类派生一个类。在我的代码中,一切似乎都没问题。但是,我在下面的程序中显示错误。请解释错误的原因,以及如何纠正错误。

#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

1 个答案:

答案 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;
    }
};