C++编译出现no matching function for call to(构造函数)

翻译过来就是没有匹配的函数。

倘若在派生类构造函数中出现此问题,可能是因为派生类中含有基类对象,出现这种情况需要在派生类构造函数的头部使用基类的构造函数对派生类中的基类对象进行初始化。

#include<iostream>
using namespace std; 
class Vehicle 
{ 
    protected: 
        int wheels; 
        float weight; 
    public: 
        Vehicle(int wheels,float weight); 
        int get_wheels(); 
        float get_weight(); 
        float wheel_load(); 
        void show(); 
}; 

/* 请在这里填写答案 */
Vehicle::Vehicle(int wheels,float weight):wheels(wheels),weight(weight)
{

}
int Vehicle::get_wheels(){
    return wheels;
}
float Vehicle::get_weight()
{
    return weight;
}
float Vehicle::wheel_load()
{
    
}
void Vehicle::show()
{
    cout<<"Type:Vehicle"<<endl;
    cout<<"Wheel:"<<wheels<<endl;
    cout<<"Weight:"<<weight<<"kg"<<endl;
}
class Car:public Vehicle{
    private:
    int passenger_load;
    public:
    Car(int a,float b,int c)
    {
    wheels=a;
    weight=b;
    passenger_load=c;
    }
    void show()
    {
    cout<<"Type:Car"<<endl;
        cout<<"Type:Vehicle"<<endl;
    cout<<"Wheel:"<<wheels<<endl;
    cout<<"Weight:"<<weight<<"kg"<<endl;
    cout<<"Load:"<<passenger_load<<" "<<"persons";
    }
};
int main () 
{ 
    Vehicle v(4,1000);
    v.show(); 
    Car car1(4,2000,5);  
    car1.show (); 
    return 0;
}

 使用以上代码会出现以下错误

 这个时候在派生类Car的构造函数使用头部初始化用基类的构造函数给基类的对象进行初始化即可解决问题。

 

#include<iostream>
using namespace std; 
class Vehicle 
{ 
    protected: 
        int wheels; 
        float weight; 
    public: 
        Vehicle(int wheels,float weight); 
        int get_wheels(); 
        float get_weight(); 
        float wheel_load(); 
        void show(); 
}; 

/* 请在这里填写答案 */
Vehicle::Vehicle(int wheels,float weight):wheels(wheels),weight(weight)
{

}
int Vehicle::get_wheels(){
    return wheels;
}
float Vehicle::get_weight()
{
    return weight;
}
float Vehicle::wheel_load()
{
    
}
void Vehicle::show()
{
    cout<<"Type:Vehicle"<<endl;
    cout<<"Wheel:"<<wheels<<endl;
    cout<<"Weight:"<<weight<<"kg"<<endl;
}
class Car:public Vehicle{
    private:
    int passenger_load;
    public:
    Car(int a,float b,int c):Vehicle(a,b),passenger_load(c)
    {
    }
    void show()
    {
    cout<<"Type:Car"<<endl;
        cout<<"Type:Vehicle"<<endl;
    cout<<"Wheel:"<<wheels<<endl;
    cout<<"Weight:"<<weight<<"kg"<<endl;
    cout<<"Load:"<<passenger_load<<" "<<"persons";
    }
};
int main () 
{ 
    Vehicle v(4,1000);
    v.show(); 
    Car car1(4,2000,5);  
    car1.show (); 
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小庄科技服务工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值