作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] 判斷式中根據物件呼叫方法
時間Fri Mar 2 10:14:44 2012
※ 引述《elfkiller (沒有暱稱)》之銘言:
: 各位大大好
: 我現在遇到一個設計上的問題:
: 1. A,C 繼承 P; B 繼承 A; D 繼承 C
: 2. A,B中有方法 ab(); C,D中有方法 cd()
: 3. A,B,C,D,P會由同學完成,所以我不能做太大的更動建議,只能做小幅度調整
: 4. P中沒有ab()和cd()
: 我現在必須要根據物件類型呼叫方法
: 大概是
: if(A* = new A OK!)
: A->ab()
: else if(B* = new B OK!)
: B->ab()
: else if(C* = new C OK!)
: C->cd()
: else if(D* = new D OK!)
: D->cd()
: 像這樣代碼重複性很高,不知道有沒有比較好的方法呢?
: PS: 實際情況有更多class,A下有數個子類,C下有數個子類
class P {
// ...
virtual void DoSomething() = 0;
};
class A : public P {
virtual void ab()
{
// implement ab() in A
}
virtual void DoSomething()
{
ab();
}
};
class B : public A {
virtual void ab()
{
// implement ab() in B
}
// no need to override DoSomething()
};
C 和 D 的情況就把 ab() 改成 cd()
我想多宣告一個 virtual function 應該不算太大的更動吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.3.139
推 angleevil:有神快拜<(__)> 03/02 11:42
→ littleshan:現在才看到超哥已經在推文寫了一樣的方法 03/02 13:50