看板 C_and_CPP 關於我們 聯絡資訊
各位大大好 我現在遇到一個設計上的問題: 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下有數個子類 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.80.48.37
elfkiller:另外目前狀況是P下可能會再增加另兩組繼承樹這樣 03/02 01:13
elfkiller:ef(), gh()這樣 03/02 01:14
james732:我會想用多型並且加上一個共通的介面 03/02 01:34
loveme00835:ab() 是從 P 繼承下來的嗎? 03/02 01:39
james732:http://ideone.com/Rz8Ly 我會寫成這個樣子 03/02 01:41
loveme00835:btw, 我看不懂你 if() 想表示的意思, 不合語法 03/02 01:41
loveme00835:請忽略 4f 03/02 01:42
james732:我猜他想做的是 http://ideone.com/KHufx 這樣? 03/02 01:46
elfkiller:判斷式內會用 dynamic_cast 03/02 01:48
elfkiller:超哥的方法真棒,要求實作共同介面,我早該想到了QQ 03/02 01:50
elfkiller:學藝不精阿QQ 03/02 01:51
qrtt1:實作不能叫同學改,大家把 method name 改成同名應該ok吧. 03/02 09:44
angleevil:超哥在OO繼承邏輯上,真的有一套 03/02 11:39