代码之家  ›  专栏  ›  技术社区  ›  Jan Deinhard

如何使用boost::object_pool<>::构造一个非常量引用作为ctor参数?

  •  0
  • Jan Deinhard  · 技术社区  · 15 年前

    是否可以使用boost::object\u pool<>::用非常量引用构造?

    以下代码段未编译(VS2010):

    foo::foo(bar & b)
    {
    }
    
    static boost::shared_ptr<foo> foo::create(bar & b)
    {
      return boost::shared_ptr<foo>(foo_pool.construct(b),
        boost::bind(& boost::object_pool<foo>::destroy, & foo_pool, _1));
    }
    

    VS2010抱怨无法转换bar&到const bar&的步骤;。查看boost::object\u pool<>::构建一个清晰的理由:

    element_type * construct(const T0 & a0)
    

    但是我不能使ctor参数常量。有什么诀窍可以使boost::object\u pool<&燃气轮机;和我的foo班一起工作?

    1 回复  |  直到 15 年前
        1
  •  5
  •   GManNickG    15 年前

    使用 boost::ref :

    static boost::shared_ptr<foo> foo::create(bar & b)
    {
      return boost::shared_ptr<foo>(foo_pool.construct(boost::ref(b)),
        boost::bind(& boost::object_pool<foo>::destroy, & foo_pool, _1));
    }
    

    增强::参考 制造 reference_wrapper