1

我一直想知道如何转发声明boost::multi_index_container一段时间。

目录中有multi_index_container_fwd.hpp,ordered_index_fwd.hpp等等multi_index

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

但是,我想不出一种multi_index_container单独使用这些 *_fwd.hpp 文件来声明 a 的方法。

我一直都包含完整的实现文件multi_index_container.hppindex.html 。

4

1 回答 1

2

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

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

于 2013-07-30T09:32:55.140 回答