C++: error C2661: 'vehicle::vehicle' : no overloaded function takes 2 parameters

#include<iostream>
using namespace std;
class vehicle
{
protected:
int wheels;
float weight;
};
class car:public vehicle
{
protected:
int p_load;
public:
car(int p,int w,float wh):vehicle(w=wheels,wh=weight)
{ p_load=p; }
void display()
{
cout<<wheels<<endl<<weight<<endl<<p_load<<endl;
}
};
void main()
{
car c(19,4,2.4);
}什么问题看不懂,求大神求教!!!

第1个回答  2014-06-17
public:
 car(int p,int w,float wh):vehicle(w=wheels,wh=weight)

你的car的构造函数去调用一个不存在基类构造函数,并且你传递参数的方式有问题,应该是

car(int p,int w,float wh):vehicle(w,wh)

在基类中添加构造函数

vehicle(int wh, float wg)

来解决错误。

第2个回答  2014-06-17
vehicle类没有这样的2个参数的重载构造函数:

:vehicle(w=wheels,wh=weight)

即使有,这里的调用格式也不对,而是应该在vehicle类的声明中出现
第3个回答  推荐于2016-04-11
#include<iostream>
using namespace std;
class vehicle
{
protected:
int wheels;
float weight;
public:
// 添加构造函数即可
vehicle(int w, int wh) : weight(w), wheels(wh) {}
};
class car :public vehicle
{
protected:
int p_load;
public:
car(int p, int w, float wh) : vehicle(w, wh)
{
p_load = p;
}
void display()
{
cout << wheels << endl << weight << endl << p_load << endl;
}
};
void main()
{
car c(19, 4, 2.4);
}

追问

为什么输出后2.4变成了2,变成了整数,我把vehicle(int w, int wh)改成vehicle(int w, float wh)还是2啊,帮我看看?

追答#include<iostream>
using namespace std;
class vehicle
{
protected:
float wheels;
int weight;
public:
// 添加构造函数即可
vehicle(int w, float wh) : weight(w), wheels(wh) {}
};
class car :public vehicle
{
protected:
int p_load;
public:
car(int p, int w, float wh) : vehicle(w, wh)
{
p_load = p;
}
void display()
{
cout << wheels << endl << weight << endl << p_load << endl;
}
};
void main()
{
car c(19, 4, 2.4);
c.display();
}

本回答被提问者采纳
相似回答