作者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/cn.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