有关多重继承参数传递问题? 请帮忙调试一下这个程序,谢谢啦!!!!!!!!
#ifndef _SEVEN3_
#define _SEVEN3_
#include<iostream>
using namespace std;
//Cvehicle类的定义
class Cvehicle
{
public:
Cvehicle(int MaxSpeed,int Weight);
Cvehicle(){};
void Run();
void Stop();
int GetMaxSpeed();
int GetWeight();
void SetWeight(int w);
void SetMaxSpeed(int max);
void Display();
//int GetMaxSpeed();
private:
int m_MaxSpeed;
int m_Weight;
};
//Cbicycle类的定义
class Cbicycle:virtual public Cvehicle
{
private:
int m_VehicleNum;
float m_Height;
public:
Cbicycle(int MaxSpeed,int Weight,float Height);
void SetHeight(float n);
float GetHeight();
void Display();
};
//Cmotorcar类的定义
class Cmotorcar:virtual public Cvehicle
{
private:
int m_SeatNum;
public:
Cmotorcar(int MaxSpeed,int Weight,int seatnum);
void SetSeatNum(int n);
int GetSeatNum();
void Display();
};
//Cmotorcycle类的定义
class Cmotorcycle:public Cbicycle,public Cmotorcar
{
public:
void Display();
Cmotorcycle(int MaxSpeed,int Weight,float Height,int seatnum);
int n;
};
#endif
Cvehicle::Cvehicle(int MaxSpeed, int Weight)
{
cout<<"构造了一个车"<<endl;
m_MaxSpeed=MaxSpeed;
m_Weight=Weight;
}
void Cvehicle::Run()
{
cout<<"车启动啦!"<<endl;
}
void Cvehicle::Stop()
{
cout<<"车停止了!"<<endl;
}
void Cvehicle::SetWeight(int w)
{
m_Weight=w;
}
void Cvehicle::SetMaxSpeed(int max)
{
m_MaxSpeed=max;
}
int Cvehicle::GetWeight()
{
return m_Weight;
}
int Cvehicle::GetMaxSpeed()
{
return m_MaxSpeed;
}
void Cvehicle::Display()
{
cout<<"车的基本信息如下:"<<endl;
cout<<"最大速度 重量 "<<endl;
cout<<m_MaxSpeed<<" "<<m_Weight<<endl;
}
//bicycle 类的实现
Cbicycle::Cbicycle(int MaxSpeed, int Weight, float Height):Cvehicle(MaxSpeed,Weight)
{
cout<<"将车改装成了一辆自行车!"<<endl;
m_Height=Height;
}
float Cbicycle::GetHeight()
{
return m_Height;
}
void Cbicycle::SetHeight(float n)
{
m_Height=n;
}
void Cbicycle::Display()
{
cout<<"自行车的基本信息如下:"<<endl;
cout<<"最大速度 重量 高度"<<endl;
cout<<GetMaxSpeed()<<" "<<GetWeight()<<" "<<m_Height<<endl;
}
//Cmotorcar类的实现
Cmotorcar::Cmotorcar(int MaxSpeed, int Weight,int seatnum):Cvehicle(MaxSpeed,Weight)
{
m_SeatNum=seatnum;
cout<<"构造了一辆汽车"<<endl;
}
int Cmotorcar::GetSeatNum()
{
return m_SeatNum;
}
void Cmotorcar::SetSeatNum(int n)
{
m_SeatNum=n;
}
void Cmotorcar::Display()
{
cout<<"此汽车的基本信息如下:"<<endl;
cout<<"最大速度 重量 座位数 "<<endl;
cout<<GetMaxSpeed()<<" "<<GetWeight()<<" "<<GetSeatNum()<<endl;
}
//Cmotorcycle类的实现
Cmotorcycle::Cmotorcycle(int MaxSpeed,int Weight,float Height,int seatnum):Cmotorcar(MaxSpeed,Weight,seatnum),Cbicycle(MaxSpeed,Weight, Height) {
cout<<"派生了一辆摩托车"<<endl;
}
void Cmotorcycle::Display()
{
cout<<"此摩托车的基本信息如下:"<<endl;
cout<<"最大速度 重量 高度 座位数 "<<endl;
cout<<GetMaxSpeed()<<" "<<GetWeight()<<" "<<GetHeight()<<" "<<GetSeatNum()<<endl;
}
void main()
{
//Cvehicle vehicle(160,2);
//vehicle.display();
//Cbicycle bicycle(60,25,1.5);
//bicycle.Display();
//Cmotorcar motorcar(200,100,4);
//motorcar.Display();
Cmotorcycle motorcycle(100,50,1.5,1);//参数一次表示:最大速度 重量 高度 座位数
motorcycle.Display();
}
其中Cmotorcar和Cbicycle继承Cvehicle类
Cmotorcycle继承Cmotorcar和Cbicycle类
程序能运行,可是结果不正确
得不到正确:最大速度和重量
所有派生类的最大速度和重量的设置均由Cvehicle类中的Cvehicle(int MaxSpeed,int Weight)设置,
可是程序在执行时调用的是Cvehicle(){};
请帮帮解决一下。。谢谢!!!!!!!!!