Jan*_*ard 0 c++ boost memory-management pool
以某种方式使用boost :: object_pool <> :: construct和非const引用是否可行?
以下代码段无法编译(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));
}
Run Code Online (Sandbox Code Playgroud)
VS2010抱怨无法将bar转换为const bar&.看看boost :: object_pool <> :: construct,原因很清楚:
element_type * construct(const T0 & a0)
Run Code Online (Sandbox Code Playgroud)
我不能使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));
}
Run Code Online (Sandbox Code Playgroud)
boost::ref
做一个reference_wrapper
.因为它使用指针,所以可以根据需要复制它,并隐式取消引用到原始值的引用.
归档时间: |
|
查看次数: |
716 次 |
最近记录: |