use*_*661 3 c++ inheritance multiple-inheritance
假设我有以下类:
class Base {
virtual void func() { cout << "func base" << endl; }
};
class A : virtual public Base {
public:
virtual void func() { cout << "func A" << endl; }
};
class B : virtual public Base {
public:
virtual void func() { cout << "func B" << endl; }
};
class C : public A, public B {
C(bool is_a);
public:
virtual void func() { // Call appropriate parent's func here }
};
Run Code Online (Sandbox Code Playgroud)
我的要求是func()当我调用C时调用适当的父类函数func().这就是我的意思:
Base* ptr = new C(true /*is_a*/);
ptr->func(); // This should call A's func internally
Run Code Online (Sandbox Code Playgroud)
怎么做到这一点?它甚至可能吗?
[编辑]
这可能更像是一个设计问题.众所周知,C类只有一个真正的父(A或B).并且取决于哪个是父,我希望调用该函数.欢迎任何替代设计建议.
我从A和B派生C,因为有一些共同的功能,A和B共享,哪些不能成为基类的一部分.
你需要A::func()明确地打电话.
class C : public A, public B {
public:
virtual void func() { A::func(); }
};
Run Code Online (Sandbox Code Playgroud)
更新(给你):
你真的想要实现什么?您想解决一个实际问题吗?
如果你知道"C类只有一个真正的父母",为什么你需要首先从A和B派生出来?尽管Aconcagua的答案有效,但它看起来更像是一个没有在您身边正确陈述的问题的解决方法.如果您正在处理类的不同实现,您不想使用某种模式(如桥或策略模式)吗?
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |