Re: [問題] 判斷式中根據物件呼叫方法
※ 引述《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
推
03/02 11:42, , 1F
03/02 11:42, 1F
→
03/02 13:50, , 2F
03/02 13:50, 2F
討論串 (同標題文章)