我想应该是虚基类的原因吧,我想要是
class A{
int a;
public:
A(int x){a=x;}
.
};
class B:public A{
int b;
public:
B(int x,int y):A(x){b=y;}
.
};
class C:public B{
int c;
public:
C(int x,int y,int z):B(x,y){c=z;}
};
这里就可以
我想应该是虚基类的原因吧,我想要是
class A{
int a;
public:
A(int x){a=x;}
.
};
class B:public A{
int b;
public:
B(int x,int y):A(x){b=y;}
.
};
class C:public B{
int c;
public:
C(int x,int y,int z):B(x,y){c=z;}
};
这里就可以
我想应该是虚基类的原因吧,我想要是
是的
如果一个派生类有一个直接或间接的虚基类,那么派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,如果未列出,则表示使该虚基类的默认构造函数来初始化派生类对象中的虚基类子对象.
是的
如果一个派生类有一个直接或间接的虚基类,那么派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,如果未列出,则表示使该虚基类的默认构造函数来初始化派生类对象中的虚基类子对象.
这句话值得品味.说到点子上了
的确说到点子上了,我就引用这个回复作为本贴的总结吧,他把问题的根源给挖掘出来了
恩,收下
[此贴子已经被作者于2006-5-19 21:35:26编辑过]
#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 M,int W,int H,int S):bicycle(M,W,H),motorcar(M,W,S),vehicle(M,W)
{
}
void show()
{
cout<<Maxspeed<<Weight<<Height<<seatnum;
}
};
void main()
{
}