我是新的C++,我試圖實現以下的設計。通父類的引用在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);
貌似運行時多態性,但並不完全(或者是什麼呢?)......因爲它是一個子類中。 ..
這是設計本身只是垃圾,還有一個更好的方法來實現這一目標?
'常見的代碼()'可能是不把它最好的方式。我只是爲了簡潔起見。通用代碼實際上都是在調用'do()'和'doMore()'的時候。你的第二個建議看起來很有希望我會給它一個! – user2624119