2010-04-08 38 views
2

我很喜欢使用boost的object_pool类来为一组视频帧重用内存。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); 

2005年MSVS建设这个,我收到错误:

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

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

我已经见过pool_construct的boost页面,但我不太确定我需要采取的方向。我在我的机器上构建的boost具有pool_construct.m4,pool_construct.sh,pool_construct.bat和pool_construct.inc。这是我在自己的项目中对这些示例文件做什么的问题?我是否会创建自己的pool_construct.inc变体并将其包含在我自己的项目中?我将如何添加文件?

任何提示/建议将不胜感激。请注意我已经安装了gnu的m4。

zerodefect。

回答

2

如果我在我的Debian机器上看/usr/include/boost/pool/detail/pool_construct.inc(对不起,目前没有访问MSVC),我看到它只支持最多3个构造函数参数。

根据documentation与m4混淆,以支持比支持3种听起来更痛苦的事情,比较简单地创建一个新的构造器,该构造器在单个结构中捆绑了足够多的参数,或者将总数传递给数量支持的。

+0

很酷...谢谢你。 – ZeroDefect 2010-06-03 09:57:20