我试图为子类创建构造函数。但我不断收到此错误消息。我试过在这里搜索,但我找到的答案都没有应用到我的问题中。对不起,如果之前被询问过。
在构造函数' 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
}
答案 0 :(得分:1)
在EixoDinamico
的构造函数中,您正在调用Eixo
(Eixo()
)的默认构造函数,但这并不存在。 Eixo
的自定义构造的声明禁用自动生成默认构造函数,并且您没有明确声明一个。为此,请添加
Eixo() = default;
致Eixo
的声明或自己实施。
还要确保调用默认构造函数是您想要的。正如underscore_d指出的那样,这没有多大意义。