[问题] Class变量宣告有 class型态的变量

楼主: coal511464 (我一个人)   2017-05-08 14:41:00
开发平台(Platform): (Ex: Win10, Linux, ...)
Linux
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
No
问题(Question):
最近看到一种class的用法 不过查了网络资料发现根本很少人这样用
想请教板上这种用法到底目的在于?
Class A {
class B *b;
};
这种奇怪的宣告方式等同于 B *b 吗?
还是另有所指?
谢谢
作者: loveflames (咕啾咕啾魔法阵)   2017-05-08 15:01:00
A可以不知道B的实作
作者: steve1012 (steve)   2017-05-08 15:21:00
没有很少吧 有时候你不知道是怎样的class 要被用如果你要B b;的话 编译器必须知道b的大小才能给内存所以一定要知道implementation. Pointer 只需要allocate pointer size看错问题 答案是对 可以查elaborate type specifier.没啥好处我刚以为你要问pointer vs object
楼主: coal511464 (我一个人)   2017-05-08 15:35:00
谢谢楼上 你点出了关键字
作者: hunandy14 (Charlott.HonG)   2017-05-08 19:22:00
Handle Class前面大大堤的~不过好像不是你要的
作者: s4300026 (s4300026)   2017-05-09 06:48:00
巢状class?
作者: steve1012 (steve)   2017-05-09 09:51:00
不是巢状class
作者: Killercat (杀人猫™)   2017-05-09 22:03:00
有一种用法是,A是B的Proxy,而B是template variable不过这写法没那么单纯 要有overload一些operator
作者: EdisonX (卡卡兽)   2017-05-10 01:04:00
杀人猫的范例 => std::bitset<N>
作者: Killercat (杀人猫™)   2017-05-10 13:49:00
er..应该是std::shared_ptr吧 XD
作者: LPH66 (-6.2598534e+18f)   2017-05-10 19:45:00
我以为你在说 CRTP...
作者: Killercat (杀人猫™)   2017-05-10 21:54:00
CRTP也是一种没错, 不过在这里讲这个太玄了 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com