[問題] Class變數宣告有 class型態的變數

看板C_and_CPP作者 (我一個人)時間8年前 (2017/05/08 14:41), 8年前編輯推噓7(7012)
留言19則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) No 問題(Question): 最近看到一種class的用法 不過查了網路資料發現根本很少人這樣用 想請教板上這種用法到底目的在於? Class A { class B *b; }; 這種奇怪的宣告方式等同於 B *b 嗎? 還是另有所指? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.75.3.222 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1494225668.A.1C0.html ※ 編輯: coal511464 (211.75.3.222), 05/08/2017 14:41:30 ※ 編輯: coal511464 (211.75.3.222), 05/08/2017 14:42:21 ※ 編輯: coal511464 (211.75.3.222), 05/08/2017 14:42:49

05/08 15:01, , 1F
A可以不知道B的實作
05/08 15:01, 1F

05/08 15:21, , 2F
沒有很少吧 有時候你不知道是怎樣的class 要被用
05/08 15:21, 2F

05/08 15:22, , 3F
如果你要B b;的話 編譯器必須知道b的大小才能給記憶體
05/08 15:22, 3F

05/08 15:22, , 4F
所以一定要知道implementation. Pointer 只需要alloca
05/08 15:22, 4F

05/08 15:22, , 5F
te pointer size
05/08 15:22, 5F

05/08 15:27, , 6F
看錯問題 答案是對 可以查elaborate type specifier.
05/08 15:27, 6F

05/08 15:27, , 7F
沒啥好處
05/08 15:27, 7F

05/08 15:27, , 8F
我剛以為你要問pointer vs object
05/08 15:27, 8F

05/08 15:35, , 9F
謝謝樓上 你點出了關鍵字
05/08 15:35, 9F

05/08 19:22, , 10F
Handle Class
05/08 19:22, 10F

05/08 19:26, , 11F
前面大大堤的~不過好像不是你要的
05/08 19:26, 11F

05/09 06:48, , 12F
巢狀class?
05/09 06:48, 12F

05/09 09:51, , 13F
不是巢狀class
05/09 09:51, 13F

05/09 22:03, , 14F
有一種用法是,A是B的Proxy,而B是template variable
05/09 22:03, 14F

05/09 22:03, , 15F
不過這寫法沒那麼單純 要有overload一些operator
05/09 22:03, 15F

05/10 01:04, , 16F
殺人貓的範例 => std::bitset<N>
05/10 01:04, 16F

05/10 13:49, , 17F
er..應該是std::shared_ptr吧 XD
05/10 13:49, 17F

05/10 19:45, , 18F
我以為你在說 CRTP...
05/10 19:45, 18F

05/10 21:54, , 19F
CRTP也是一種沒錯, 不過在這裡講這個太玄了 XD
05/10 21:54, 19F
文章代碼(AID): #1P41C470 (C_and_CPP)