Re: [問題] 繼承架構設計問題..

看板C_and_CPP作者 (CA)時間15年前 (2009/04/14 10:29), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《xamous (一天死去一點)》之銘言: : 現在遇到兩個問題: : 1) : 希望在 DerivedManager 的實做中用 vector 來管理元素,因為: : 1. vector 管理方便。 : 2. 我希望在 DerivedManager 內保留的是 item 的 "副本",vector : 會將元素拷貝一份的行為剛好符合所需。 : 但是因為 Base 只是 abstract class,所以無法產生 vector<Base>。 如果你希望在 vector< Base > 中保持多型特性 可以改用 vector< tr1::shared_ptr< Base > > 裡面放的是指標 不知道 shared_ptr 是什麼的話可以去找一下資料 另外,你需要的是多型複製 以目前你的設計會造成大量的 slice 在 Base 裡多定義一個函式: virtual Base * clone() const = 0; 並可以用另外的手法強迫 Derived classes 一定要實作它 : 2) : client 在使用上也會遇到問題,因為 Base 是 abstract,所以 : API_RetrieveItmes 的設計者只看到 interface 的話,也無法產生 Base : 物件來作為 addItem 的參數。 : 想請問一下像這樣的架構有什麼問題呢?有沒有更好的架構可以使用? : 學藝不精請多指教 m(_ _)m 你可能需要一個 Object Factory Loki 的 Factory 值得參考 -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.104.235 ※ 編輯: legnaleurc 來自: 140.123.104.235 (04/14 10:33)

04/17 06:08, , 1F
謝謝 :)
04/17 06:08, 1F
文章代碼(AID): #19u_KcPi (C_and_CPP)
文章代碼(AID): #19u_KcPi (C_and_CPP)