waa*_*919 9 c++ constructor shared-ptr c++11
如何在构造函数的初始化列表中初始化共享指针?
我有这个:
Foo::Foo (const callback &cb)
{
Bar bar;
bar.m_callback = cb;
m_ptr = std::make_shared<Bar>(bar);
//...
}
Run Code Online (Sandbox Code Playgroud)
我想把它放到构造函数的初始化列表中.就像是:
Foo::Foo (const callback &cb) :
m_ptr(std::make_shared<Bar>(?????))
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
酒吧是struct:
struct Bar
{
callback_type m_callback;
// etc.
};
Run Code Online (Sandbox Code Playgroud)
添加构造函数explicit Bar::Bar(const callback&).explicit将防止与自动转换相关的错误.
更好的是,如果Bar是聚合,你可以使用大括号初始值设定项:
Foo::Foo(const callback& cb)
: m_ptr(std::make_shared<Bar>(Bar{cb}))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7591 次 |
| 最近记录: |