【问题标题】:boost object_pool construct methodboost object_pool 构造方法
【发布时间】:2010-04-08 08:55:54
【问题描述】:

我热衷于使用 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 页面,但我不太确定我需要采取的方向。我在我的机器上构建的 boost 有 pool_construct.m4、pool_construct.sh、pool_construct.bat、pool_construct.inc。这是一个问题,我如何在我自己的项目中处理这些示例文件?我会创建自己的 pool_construct.inc 变体并将其包含在我自己的项目中吗?如何添加文件?

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

零缺陷。

【问题讨论】:

    标签: boost object-pooling


    【解决方案1】:

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

    根据documentation 与 m4 混淆以支持超过支持的 3 听起来很痛苦,与简单地创建一个新的构造函数相比到支持的数量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      相关资源
      最近更新 更多