没有用于调用构造函数类的匹配函数

时间:2017-10-25 18:31:44

标签: c++ function constructor

我试图为子类创建构造函数。但我不断收到此错误消息。我试过在这里搜索,但我找到的答案都没有应用到我的问题中。对不起,如果之前被询问过。

在构造函数' EixoDinamico :: EixoDinamico(双人,双人,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'

Eixo.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
}

EixoDinamico.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 "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
}

1 个答案:

答案 0 :(得分:1)

EixoDinamico的构造函数中,您正在调用EixoEixo())的默认构造函数,但这并不存在。 Eixo的自定义构造的声明禁用自动生成默认构造函数,并且您没有明确声明一个。为此,请添加

Eixo() = default;

Eixo的声明或自己实施。

还要确保调用默认构造函数是您想要的。正如underscore_d指出的那样,这没有多大意义。