[問題] c++委託介面的設計

看板C_and_CPP (C/C++)作者 (3.7沒輸過有跳過)時間12年前 (2013/08/28 20:04), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
算是介面設計的問題 應該沒有IDE,函式庫或是環境上的差異 問題是這樣的; 一般來說程式架構通常會有上層或是下層的設計 我指的是上層開一個執行緒去call下層的物件 這時候如果想要下層事情做完以後想要callback回去 通常的作法就是上層在一開始初始化下層物件時塞進去一個function pointer 然後時機到了就call 那個上層的function 但現在想要一個比較通用的解法 所以想要把上層的this pointer傳下去 然後再看時機選擇要call的function或是data 但是現在問題來了 上層的程式如果header有包含實作(例如inline) 這時候上層和下層各build 一個.o 再link成一個執行檔 就會有重複定義的問題(因為上層的cpp會去include上層和下層的.h 下層的cpp也要include上層和下層的.h,這時候就會出現有定義重複出現) 參考網路上的作法 是各自做一個base class 利用繼承的方式 把上層的base class this pointer傳下去 (此時下層include 上層的base.h,而上層include下層的base.h) 這樣可以避免交互include 造成重複定義的問題 個人想要更進一步理解這個patten 的原理和其他應用 想請問這個作法的名稱叫什麼 ? 抱歉因為我是看別人的程式來理解加上又是程式新手 所以表達能力不是很好 不知道大家有沒有看懂我在講什麼= = -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.233.95.97

08/28 20:15, , 1F
重複定義應該是你有東西沒inline好
08/28 20:15, 1F

08/28 20:15, , 2F
或不該放header的東西放進去了
08/28 20:15, 2F
文章代碼(AID): #1I7UTC2t (C_and_CPP)
文章代碼(AID): #1I7UTC2t (C_and_CPP)