我在考虑使用boost :: object_pool,但要存储的对象类型都在同一层次结构中。我的问题是如何存储和使用池将每个对象转换为所需的类型。
我的客户将祖先存储为池的类型,然后将返回的对象与dinamyc转换为正确的类型。
它是对象池的最佳选择吗?
需要一些方向:) 提前致谢
编辑:大家都是对的。我在想传统的铸造newObj =(newType)oldObj。遗憾。答案 0 :(得分:2)
要存储多态对象,惯用解决方案是在基于值的容器中存储基类的指针。
您按值存储多态对象的当前解决方案不起作用,因为它受slicing的影响。 boost object pool只不过是一个奇特的分配器和解除分配器,它不提供多态性。
答案 1 :(得分:1)
boost :: object_pool主要用于分配相同类型的大量对象。您不应将它们用于对象层次结构。