翻译过来就是没有匹配的函数。
倘若在派生类构造函数中出现此问题,可能是因为派生类中含有基类对象,出现这种情况需要在派生类构造函数的头部使用基类的构造函数对派生类中的基类对象进行初始化。
#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;
}