作者coal511464 (我一個人)
看板C_and_CPP
標題[問題] Class變數宣告有 class型態的變數
時間Mon May 8 14:41:00 2017
開發平台(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://webptt.com/m.aspx?n=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
1F:→ loveflames: A可以不知道B的實作 05/08 15:01
2F:推 steve1012: 沒有很少吧 有時候你不知道是怎樣的class 要被用 05/08 15:21
3F:→ steve1012: 如果你要B b;的話 編譯器必須知道b的大小才能給記憶體 05/08 15:22
4F:→ steve1012: 所以一定要知道implementation. Pointer 只需要alloca 05/08 15:22
5F:→ steve1012: te pointer size 05/08 15:22
6F:推 steve1012: 看錯問題 答案是對 可以查elaborate type specifier. 05/08 15:27
7F:→ steve1012: 沒啥好處 05/08 15:27
8F:→ steve1012: 我剛以為你要問pointer vs object 05/08 15:27
9F:→ coal511464: 謝謝樓上 你點出了關鍵字 05/08 15:35
10F:→ hunandy14: Handle Class 05/08 19:22
11F:→ hunandy14: 前面大大堤的~不過好像不是你要的 05/08 19:26
12F:推 s4300026: 巢狀class? 05/09 06:48
13F:推 steve1012: 不是巢狀class 05/09 09:51
14F:推 Killercat: 有一種用法是,A是B的Proxy,而B是template variable 05/09 22:03
15F:→ Killercat: 不過這寫法沒那麼單純 要有overload一些operator 05/09 22:03
16F:推 EdisonX: 殺人貓的範例 => std::bitset<N> 05/10 01:04
17F:→ Killercat: er..應該是std::shared_ptr吧 XD 05/10 13:49
18F:推 LPH66: 我以為你在說 CRTP... 05/10 19:45
19F:→ Killercat: CRTP也是一種沒錯, 不過在這裡講這個太玄了 XD 05/10 21:54