boost object_pool构造方法

时间:2010-04-08 08:55:54

标签: boost object-pooling

我热衷于使用boost的object_pool类对一组视频帧进行内存重用。

boost::object_pool< VideoFrame > FramePool;

现在,VideoFrame类有两个构造函数。构造函数的第一个版本需要4个参数,而第二个版本需要6个参数/参数。

对于分配的每个“新”视频帧,我想使用4或6参数版本调用对象上的构造函数。例如:

//VideoFrame *F = new VideoFrame(IdeckLinkOutput, &R, PixelFormat, FrameFlags);
VideoFrame *F = FramePool.construct(IdeckLinkOutput, &R, PixelFormat, FrameFlags);

在MSVS 2005上构建它,我收到错误:

error C2660: 'boost::object_pool<T>::construct' : function does not take 4 arguments

根据object_pool的'construct'方法的文档,“ElementType必须有一个匹配???的构造函数;给定的参数数量不得超过pool_construct支持的数量”

我已经看到了pool_construct的强化页面,但我不太确定我需要采取的方向。我在我的机器上构建的boost有一个pool_construct.m4,pool_construct.sh,pool_construct.bat,pool_construct.inc。这是我在自己的项目中如何处理这些示例文件的问题?我是否会创建自己的pool_construct.inc变体并将其包含在我自己的项目中?我该如何添加文件?

非常感谢任何提示/建议。请注意,我已经安装了gnu的m4。

zerodefect。

1 个答案:

答案 0 :(得分:3)

如果我在我的Debian机器上查看/usr/include/boost/pool/detail/pool_construct.inc(抱歉当前无法访问MSVC),我发现它最多只支持3个构造函数参数。

根据documentation与m4混淆,以支持超过支持的3个声音,就像一个痛苦相比,只需创建一个新的构造函数,在单个结构中捆绑足够的参数或boost::tuple带来总数下降到支持的数字。

相关问题