前置声明解决头文件循环依赖

一种 pimpl

核心有两点:

  1. 指针的大小每个平台上是一定的,可以用指针声明不完全类型,否则编译器不知道需要多大的内存
  2. 有了 1,就可以少一步 #include 从而破除看不到定义的问题了

https://www.zhihu.com/question/379789314/answer/1082007099

这种方式实际上很破坏规范(应该尽可能避免循环依赖),但是一直被使用在 ORB-SLAM 中。