[問題] 一個設計上的問題(virtual function)
我在程式中宣告了一個 base class 的 pointer object,礙於有時候我想用該 object 去
call subclass 專屬的 funciton 時要強制轉型才能達成(如以下ex),這會造成我的程
式碼又長又醜(若命名長一點的話...)
ex. RD 與 PM 繼承 Employee
Employee* A;
(RD*)A->get_RD();
(PM*)A->get_PM();
所以我想把該 function 變成 virtual 去實做,但是又遇到以下幾個問題......
我在 base class 設定一個 pure virtual funciton,但是這個 function 並不是所有的
sub class 都會實做到,如果該 pure virtual funciton 沒有被底下每一個
sub class 實做到的時候,沒實做到該 funciton 的 sub class 在 compile 時會出現
error: cannot allocate an object of abstract type......
又,如果我不將該 virtual funciton 設成 pure,那麼在 base class 就必須實作它,
可是這樣就會違背原本設計想法的意義(該 function 明明就是只有 sub class 才用得
到,為什麼一定要我在 base class 中去實做它),如果實做了裡面不做事還 ok,但是
遇到那種 get data 類型的 function,必須回傳一個東西,我又不知道該怎麼辦才好了
......
是否最前者就是比較好的方法了呢?
又或者有沒有其他更好的設計?
謝謝大家!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.142.132
※ 編輯: rabbit0321 來自: 114.42.142.132 (12/15 20:14)
推
12/16 11:53, , 1F
12/16 11:53, 1F
→
12/16 11:55, , 2F
12/16 11:55, 2F
→
12/16 11:57, , 3F
12/16 11:57, 3F
→
12/16 11:58, , 4F
12/16 11:58, 4F
→
12/16 11:59, , 5F
12/16 11:59, 5F
推
12/16 22:43, , 6F
12/16 22:43, 6F
→
12/16 22:44, , 7F
12/16 22:44, 7F
→
12/16 22:46, , 8F
12/16 22:46, 8F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):