[問題] 判斷式中根據物件呼叫方法

看板C_and_CPP作者 (沒有暱稱)時間12年前 (2012/03/02 01:10), 編輯推噓0(0013)
留言13則, 5人參與, 最新討論串1/2 (看更多)
各位大大好 我現在遇到一個設計上的問題: 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

03/02 01:13, , 1F
另外目前狀況是P下可能會再增加另兩組繼承樹這樣
03/02 01:13, 1F

03/02 01:14, , 2F
ef(), gh()這樣
03/02 01:14, 2F

03/02 01:34, , 3F
我會想用多型並且加上一個共通的介面
03/02 01:34, 3F

03/02 01:39, , 4F
ab() 是從 P 繼承下來的嗎?
03/02 01:39, 4F

03/02 01:41, , 5F
http://ideone.com/Rz8Ly 我會寫成這個樣子
03/02 01:41, 5F

03/02 01:41, , 6F
btw, 我看不懂你 if() 想表示的意思, 不合語法
03/02 01:41, 6F

03/02 01:42, , 7F
請忽略 4f
03/02 01:42, 7F

03/02 01:46, , 8F
我猜他想做的是 http://ideone.com/KHufx 這樣?
03/02 01:46, 8F

03/02 01:48, , 9F
判斷式內會用 dynamic_cast
03/02 01:48, 9F

03/02 01:50, , 10F
超哥的方法真棒,要求實作共同介面,我早該想到了QQ
03/02 01:50, 10F

03/02 01:51, , 11F
學藝不精阿QQ
03/02 01:51, 11F

03/02 09:44, , 12F
實作不能叫同學改,大家把 method name 改成同名應該ok吧.
03/02 09:44, 12F

03/02 11:39, , 13F
超哥在OO繼承邏輯上,真的有一套
03/02 11:39, 13F
文章代碼(AID): #1FJwrwHE (C_and_CPP)
文章代碼(AID): #1FJwrwHE (C_and_CPP)