[英]No matching function for call to constructor class
我正在嘗試為子類創建構造函數。 但我不斷收到此錯誤消息。 我試過在這里搜索,但我找到的答案都不適用於我的問題。 對不起,如果之前有人問過。
在構造函數 '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 指出的那樣,這沒有多大意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.