这个问题已经在这里有一个答案:
- 多重继承一个基类 2个回答
我implemeting这个菱形继承:
class Object {
private:
int id; string name;
public:
Object(){};
Object(int i, string n){name = n; id = i;};
};
class Button: virtual public Object {
private:
string type1;
int x_coord, y_coord;
public:
Button():Object(){};
Button(int i, string n, string ty, int x, int y):Object(i, n){
type = ty;
x_coord = x;
y_coord = y;};
};
class Action: virtual public Object {
private:
string type2;
public:
Action():Object(){};
Action(int i, string n, string t):Object(i, n){ type2 = t;};
};
class ActionButton: public Button, public Action{
private:
bool active;
public:
ActionButton():Buton(), Action(){};
ActionButton(int i, string n, string t1, int x, int y, string t2, bool a):
Button(i, n, t1, x, y), Action(i, n, t2) {active = a;};
};
一切工作正常关于第一三类,但是当我尝试创建的,而不是调用与我写的参数的构造类型ActionButton的对象,它调用从Object类中的默认值。 所以每ButtonAction对象有名称的空字符串和ID的随机值。 这有什么错我的代码,我怎样才能使其正常工作?