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

No matching function for call to constructor class

本文关键字:函数 构造函数 调用      更新时间:2023-10-16

我正在尝试为子类制作构造函数。但是我不断收到此错误消息。我尝试在这里搜索,但我找到的答案都不适用于我的问题。对不起,如果之前有人问过。

在构造函数 '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'

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
}

EixoDinamico 的构造函数中,您调用了 Eixo 的默认构造函数 ( Eixo() ),但这并不存在。Eixo自定义构造的声明将禁用默认构造函数的自动生成,并且您尚未显式声明默认构造函数。为此,请添加

Eixo() = default;

Eixo声明或自己实施一个。

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