C ++继承:错误:候选人需要1个参数,提供0 [重复]

Posted

技术标签:

【中文标题】C ++继承:错误:候选人需要1个参数,提供0 [重复]【英文标题】:C++ Inheritance: Error: candidate expects 1 argument, 0 provided [duplicate] 【发布时间】:2018-04-20 13:49:53 【问题描述】:

在下面的程序中,我想从基类派生一个类。在我的代码中,一切似乎都很好。但是,我收到以下程序中显示的错误。请说明错误的原因,以及如何更正。

#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

【问题讨论】:

你的基类的构造函数接受一个参数。因此,您的派生类必须适当地构造基类。有关详细信息,请参阅您的 C++ 书籍。 【参考方案1】:

默认构造函数(即Base::Base())将用于初始化DerivedBase子对象,但Base没有。

您可以使用member initializer list 来指定应该使用Base 的哪个构造函数。例如

struct Derived: public Base

    int y;
    Derived(int y_) : Base(y_)
    //              ~~~~~~~~~~
    
        y=y_;
        cout<<"y="<<y<<endl;
    
;

【讨论】:

以上是关于C ++继承:错误:候选人需要1个参数,提供0 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

c语言中为啥函数不能重名?请举个函数重名的例子,谢谢

为啥我收到错误:__init__() 缺少 1 个必需的位置参数?

C#面试题整理

构造函数的特点

Sql Server 忽略更新错误

关于标准输入,标准输出,标准错误