正向声明boost::multi_index_container对象

Forward declare a boost::multi_index_container object

本文关键字:index container 对象 multi boost 声明      更新时间:2023-10-16

我想知道如何转发声明boost::multi_index_container已经有一段时间了。

multi_index目录中有multi_index_container_fwd.hppordered_index_fwd.hpp等等。

它们应该对程序中不需要知道对象细节的部分隐藏实现,对吧?

然而,我想不出一种方法来单独用那些*_fwd.hpp文件声明multi_index_container

我一直包含完整的实现文件,multi_index_container.hpp索引。

原则上,您应该能够通过使用适当的*_fwd.hpp标头来转发声明依赖于multi_index_container类型的函数。但并不是每种情况都可以这样处理:

class A{
  ...
private:
  multi_index_container<...>* p; // can use *_fwd.hpp headers
};
class B{
  ...
private:
  multi_index_container<...> m; // needs full headers!!
};

Boost.MultiIndex没有什么特别之处:每当您声明一个类型为T的变量,其大小需要在编译时已知时,您就必须有T的完整定义。