推 legendmtg: 不就pimpl嗎01/11 11:57
推 damody: 推1樓01/11 13:44
→ bachelorwhc: 你老闆要給對方的是abstract class 介面是return ptr01/11 15:41
→ bachelorwhc: 這不需要什麼特別打包或撰寫技巧吧01/11 15:41
→ bachelorwhc: 編譯出來後是static或dynamic library 除非逆向工程01/11 15:43
→ bachelorwhc: 否則無法知道實作細節01/11 15:44
→ bachelorwhc: 指標管理部分 如果你被要求給裸指標就直接給01/11 15:44
→ bachelorwhc: 需要管理的就用smart pointer01/11 15:45
→ bachelorwhc: 在windows的話 之後只要給對方.h跟.lib 編譯就能過01/11 15:45
→ bachelorwhc: 實際執行期間就像你講的 動態連結dll 執行環境沒有01/11 15:46
→ bachelorwhc: dll windows會自己警告01/11 15:46
→ noodleT: 目前是用 shared prt 做,覺得有些麻煩。01/11 18:48
→ noodleT: 這只是一個討論情境,並沒有真的客戶需求。01/11 18:48
→ noodleT: 我會再往一樓提的方向研究看看01/11 18:48
→ uranusjr: 用 Pimpl 加幾個 macro 用起來很簡單, 也不會有你的問題01/11 20:33
→ uranusjr: 最簡單每個物件用一個 unique_ptr 指向實作時就好, 除非01/11 20:35
→ uranusjr: 想做 copy-on-write 才會比較麻煩, 但那就是另外的問題01/11 20:35
→ firose: 不能用 smart pointer 吧,客戶怎麼知道 NewAbstract 是如01/11 21:16
→ firose: 何以即使用哪個版本產生的?01/11 21:17
客戶只要知道
Abstract 類別名就好了,
至於 NewAbstract
回傳哪一個子類別指標沒都關係,
只要用 Abstract* 都能接收吧?
或者是我誤會你的意思?
推 kwpn: pimpl或pure virtual interface01/11 21:21
※ 編輯: noodleT (36.237.86.47), 01/11/2017 22:19:38
※ 編輯: noodleT (36.237.86.47), 01/11/2017 22:20:42
→ firose: 是可以接收,但清除就有麻煩,delete 不一定能工作吧 01/11 22:53
→ hylkevin: 絕對要有virtual dtor,否則delete base pointer是未定 01/11 23:41
→ hylkevin: 義行為。 01/11 23:41
推 kevingwn: 不用virtual dtor,而是需要成對的new/delete,因為dll的 01/12 18:50
→ EdisonX: 不是方式,是方向XD 01/14 12:55