C++ 调用构造函数类时没有匹配的函数

C++ 调用构造函数类时没有匹配的函数,c++,function,constructor,C++,Function,Constructor,我正在尝试为一个子类创建构造函数。但我一直收到这个错误信息。我试着在这里搜索,但我找到的答案都不适用于我的问题。对不起,如果以前有人问过 在构造函数“EixoDinamico::EixoDinamico(double,double,Serie*,bool)”中: 错误:没有匹配的函数用于调用“Eixo::Eixo()” 注:候选人包括: 注意:Eixo::Eixo(std::string,double,double) 注:候选人需要3个参数,提供0个参数 注:Eixo::Eixo(const-E

我正在尝试为一个子类创建构造函数。但我一直收到这个错误信息。我试着在这里搜索,但我找到的答案都不适用于我的问题。对不起,如果以前有人问过

在构造函数“EixoDinamico::EixoDinamico(double,double,Serie*,bool)”中:
错误:没有匹配的函数用于调用“Eixo::Eixo()”
注:候选人包括: 注意:Eixo::Eixo(std::string,double,double)
注:候选人需要3个参数,提供0个参数
注:Eixo::Eixo(const-Eixo&)
注意:候选者需要1个参数,提供0个参数

编辑:如果我重写代码,使子类现在成为一个独立的类,问题就会消失,但我需要它成为一个子类

代码如下:

Eixo.h

#ifndef EIXO_H
#define EIXO_H
#include <iostream>

using namespace std;

class Eixo
{
public:
    Eixo(string titulo, double minimo, double maximo);
    virtual ~Eixo();

private:
    string titulo;
    double minimo;
    double maximo;
};

#endif // EIXO_H'
#ifndef EIXODINAMICO_H
#define EIXODINAMICO_H
#include "Eixo.h"


class EixoDinamico : public Eixo
{
public:
    EixoDinamico(double minimoPadrao, double maximoPadrao, Serie* 
base, bool orientacaoHorizontal);
    virtual ~EixoDinamico();

private:

};

#endif // EIXODINAMICO_H
EixoDinamico.cpp

#include "Eixo.h"
#include <iostream>

Eixo::Eixo(string titulo, double minimo, double maximo)
{
this->maximo = maximo;
this->minimo = minimo;
this->titulo = titulo;
}

Eixo::~Eixo()
{
    //dtor
}
#include "EixoDinamico.h"
#include "Eixo.h"
EixoDinamico::EixoDinamico(double minimoPadrao, double maximoPadrao, Serie* 
base, bool orientacaoHorizontal):Eixo()
{
     if(base->getQuantidade()<2){
    inicioEixo = minimoPadrao;
    fimEixo = maximoPadrao;
}
    limiteInferior = base->getLimiteInferior();
    limiteSuperior = base->getLimiteSuperior();
    if (orientacaoHorizontal){
        inicioEixo = limiteInferior->getX();
        fimEixo = limiteSuperior->getX();
}
    else{
    inicioEixo = limiteInferior->getY();
    fimEixo = limiteSuperior->getY();
}
}

EixoDinamico::~EixoDinamico()
{
//dtor
}
#包括“EixoDinamico.h”
#包括“Eixo.h”
EixoDinamico::EixoDinamico(双倍最小值,双倍最大值,系列*
基底,布尔(水平):Eixo()
{
if(base->getQuantidade()getLimiteInferor();
limiteSuperior=base->getLimiteSuperior();
如果(水平方向){
inicioEixo=limiteInferior->getX();
fimEixo=limiteSuperior->getX();
}
否则{
inicioEixo=limiteInferior->getY();
fimEixo=limiteSuperior->getY();
}
}
EixoDinamico::~EixoDinamico()
{
//dtor
}

EixoDinamico
的构造函数中,您正在调用
Eixo
Eixo()
)的默认构造函数,但该构造函数不存在。声明
Eixo
的自定义构造函数将禁用默认构造函数的自动生成,而您尚未明确声明一个。为此,添加

Eixo() = default;
声明Eixo或自己实现一个


还要确保调用默认构造函数是您真正想要的。正如下划线所指出的,这没有多大意义。

错误的可能重复项是完全正确和清楚的。基类没有接受空参数列表的构造函数,但在这里您尝试调用一个。换句话说:wh如果子类没有得到初始化它们的基,那么基类的成员应该发生at?或者子类没有使用/关心这些变量吗?如果是,为什么它会从拥有它们的类继承?它不应该。另外,为什么在
EixoDinamico.hpp
中声明构造函数的一个签名,而在
EixoDin>中定义另一个amico.cpp
?我认为更多关于构造函数工作原理的背景知识是必要的order@underscore_d在创建问题时,different声明是一个错误,感谢您指出。子类使用
Serie*base
来获取将类构造函数初始化所需的变量。换句话说,变量
(字符串titulo,双最小值,双最大值)
需要由EixoDinamico构造函数位于
Serie*base
内部。这仍然意味着您可能应该将它们交给基类的构造函数。什么是
Serie
?是的,更喜欢使用ctor init列表,而不是在ctor主体中设置成员,在这种情况下意味着调用现有的非defa然后,真正地考虑为什么你的子类不在其基础上初始化这些成员变量,以及这个问题的答案是否意味着它不应该是子类,或者那些成员应该在别的地方。