c++ 错误:没有与调用“Auto::Auto()”匹配的函数

bfrts1fy  于 2023-02-10  发布在  其他
关注(0)|答案(1)|浏览(190)

我创建了3个类:Auto(表示"汽车")、Klant(表示"客户")和AutoVerhuur(表示"汽车经销商")。
在我的main()中,我已经创建了AutoKlant对象,并且正在尝试创建AutoVerhuur对象。
在最后一个类中,我基本上想引用一个特定的KlantAuto(哪个客户租了哪辆车),但是,当我尝试这样做时,我得到了一个错误:
错误:没有与调用"Auto::Auto()"匹配的函数
如何在对象中正确引用其他对象?
下面是我的代码,如果你想看看:

#include <iostream>

using namespace std;
class Auto{
    private:
    string type;
    double prijs_per_dag;

    public:
    Auto(string type, double prijs_per_dag){
        this->type = type;
        this->prijs_per_dag = prijs_per_dag;
    }

    void set_prijs_per_dag(double percentage){
        this->prijs_per_dag = percentage;
    }

    double get_prijs_per_dag(){
        return prijs_per_dag;
    }
};
class Klant{
    private:
    string naam;
    double korting_percentage;

    public:
    Klant(string naam):
        naam(naam){}
    

    void set_korting(double percentage){
        this->korting_percentage = percentage;
    }

    double get_korting(){
        return this->korting_percentage;
    }

    string get_name(){
        return naam;
    }

    void set_name(string naam){
        this->naam = naam;
    }
};
class AutoHuur{
    private:
    int aantal_dagen;
    Auto wagen;
    Klant huur;

    public:
    AutoHuur(Auto car, Klant huurder, int dagen){
        wagen = car;
        huur = huurder;
        aantal_dagen = dagen;
    }
};
int main(){
    Klant k("Mijnheer de Vries");
    k.set_korting(10.0);

    Auto a1("Peugeot 207", 50);
    
    AutoHuur ah1(a1, k, 4);    
}
xxls0lw8

xxls0lw81#

您的Auto类没有定义default constructor,但是您的AutoHuur类有一个Auto wagen;数据成员,编译器试图将其构造为默认值(因为您没有告诉它其他情况),因此出现错误。
因此,您需要:

  • Auto类一个默认构造函数,例如:
Auto(){
    this->type = "";
    this->prijs_per_dag = 0;
    // or whatever default values make sense for your needs...
}
  • 否则,请更改AutoHuur类的构造函数以使用其member initialization list,从而使用所需的Auto构造函数构造wagen成员(您也应该对其他数据成员执行相同的操作),例如:
AutoHuur(Auto car, Klant huurder, int dagen)
    : wagen(car), huur(huurder), aantal_dagen(dagen)
{
}

相关问题