| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1353 人关注过本帖
标题:[求助]多重继承的构造问题
取消只看楼主 加入收藏
janlun86
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-9
收藏
 问题点数:0 回复次数:6 
[求助]多重继承的构造问题

谁能帮我改错啊,实在不知道哪里错了...
#include<iostream.h>
class vehicle
{
public:
int Maxspeed;
int Weight;
vehicle(int M,int W)
{
Maxspeed=M;
Weight=W;
} ;
void run(){cout<<"running"<<endl;};
void stop(){cout<<"stopping"<<endl;};
};
class bicycle:virtual public vehicle
{
public:
int Height;
bicycle(int M,int W,int H):vehicle(M,W)
{
Height=H;
};
};

class motorcar:virtual public vehicle
{
public:
int seatnum;
motorcar(int M,int W,int S):vehicle(M,W)
{
seatnum=S;
};
};
class Motorcycle:public bicycle,public motorcar
{
public:
Motorcycle(int H,int S):bicycly(H),mortorcar(S)
{
};
void show()
{
cout<<Maxspeed<<Weight<<Height<<seatnum;
};
};
void main()
{
}

[此贴子已经被作者于2006-5-19 11:17:06编辑过]

搜索更多相关主题的帖子: int vehicle Maxspeed 构造 public 
2006-05-18 18:15
janlun86
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-9
收藏
得分:0 
我自己感觉是Motorcycle类继承的问题,就是Motorcycle构造函数这出的问题,但不知道怎么改

天道酬勤,切忌浮躁
2006-05-18 18:50
janlun86
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-9
收藏
得分:0 
以下是引用freshman42在2006-5-18 21:26:00的发言:

Motorcycle(int H,int S,int W,int P):bicycle(H,S,W),motorcar(H,S,P),vehicle(H,S)
{
};
这个我不太理解,p是什么?bicycle参数表列怎么会有W,还有motorcar,vehicle的参数表列也看不明白...请高手指教


天道酬勤,切忌浮躁
2006-05-19 09:52
janlun86
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-9
收藏
得分:0 
如果按照Motorcycle(int H,int S,int W,int P):bicycle(H,S,W),motorcar(H,S,P),vehicle(H,S)
{
};
这种改法,在主函数里实例化一个对像就会出现报错error C2512: 'Motorcycle' : no appropriate default constructor available

天道酬勤,切忌浮躁
2006-05-19 09:58
janlun86
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-9
收藏
得分:0 
以下是引用freshman42在2006-5-19 10:56:00的发言:

是的
如果一个派生类有一个直接或间接的虚基类,那么派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,如果未列出,则表示使该虚基类的默认构造函数来初始化派生类对象中的虚基类子对象.

这句话值得品味.说到点子上了


天道酬勤,切忌浮躁
2006-05-19 11:12
janlun86
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-9
收藏
得分:0 
刚看了版规,决定改标题,以免犯规
这样对遇到同样问题的朋友也会有点帮助吧

[此贴子已经被作者于2006-5-19 11:23:34编辑过]


天道酬勤,切忌浮躁
2006-05-19 11:18
janlun86
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-9
收藏
得分:0 
以下是引用heliujin在2006-5-19 13:02:00的发言:
如果一个派生类有一个直接或间接的虚基类,那么派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,如果未列出,则表示使该虚基类的默认构造函数来初始化派生类对象中的虚基类子对象.
这说到点子上了啊 书上就是这么说的 除非虚基类有默认构造函数 可以省略对它的初始化

的确说到点子上了,我就引用这个回复作为本贴的总结吧,他把问题的根源给挖掘出来了


天道酬勤,切忌浮躁
2006-05-19 13:17
快速回复:[求助]多重继承的构造问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019020 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved