【发布时间】:2016-12-14 03:18:44
【问题描述】:
我是 C++ 新手,正在尝试实现以下设计。
class A { do (); doMore (); } // abstract
class B { do (); doMore (); } // abstract
class X : public A, public B // Also abstract
{
foo() {
// common code
A::do();
A::doMore();
}
bar() {
// common code
B::do();
B::doMore();
}
}
A 和 B 都提供了 do() 和 doMore() 的实现。
如何提取新函数采用调用正确父类中的方法的 arg 的公共代码?
类似
X::newMethod(arg_that_indicates_parent_class) {
// common code
arg_that_indicates_parent_class::do();
arg_that_indicates_parent_class::doMore();
}
那就这样称呼吧
newMethod(pass_A_somehow);
newMethod(pass_B_somehow);
看起来像运行时多态性,但不完全是(或者是吗?)...因为它在子类中...
这个设计本身就是垃圾吗?有更好的方法来实现吗?
【问题讨论】:
标签: c++ oop multiple-inheritance