gpt4 book ai didi

c++ - 如何将 boost::object_pool<>::construct 与非 const 引用一起用作 ctor 参数?

转载 作者:行者123 更新时间:2023-11-27 22:30:15 25 4
gpt4 key购买 nike

是否可以通过非 const 引用使用 boost::object_pool<>::construct?

以下代码段无法编译 (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_pool<>::construct 原因很清楚:

element_type * construct(const T0 & a0)

虽然我不能使 ctor 参数为 const。有什么技巧可以让 boost::object_pool<> 与我的 foo 类一起工作吗?

最佳答案

使用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));
}

boost::ref 生成一个 reference_wrapper。因为它使用指针,所以可以随心所欲地复制它,并隐式取消引用为对原始值的引用。

关于c++ - 如何将 boost::object_pool<>::construct 与非 const 引用一起用作 ctor 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3455493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com