如何在构造函数的初始化列表中初始化共享指针?
How to initialize a shared pointer in the initialization list of a constructor?
如何在构造函数的初始化列表中初始化共享指针?
我有这个:
Foo::Foo (const callback &cb)
{
Bar bar;
bar.m_callback = cb;
m_ptr = std::make_shared<Bar>(bar);
//...
}
我想把它放入构造函数的初始化列表中。
类似于:
Foo::Foo (const callback &cb) :
m_ptr(std::make_shared<Bar>(?????))
{
// ...
}
栏是 struct
:
struct Bar
{
callback_type m_callback;
// etc.
};
实施构造函数 Bar::Bar( const callback & )
将是显而易见的解决方案...?!?
Foo::Foo( const callback & cb ) :
m_ptr( std::make_shared<Bar>( cb ) )
{
// ...
}
添加构造函数explicit Bar::Bar(const callback&)
。 explicit
将防止与自动转换相关的错误。然后你可以像这样初始化一个shared_ptr<Bar>
:
Foo::Foo(const callback& cb)
: m_ptr(std::make_shared<Bar>(cb))
请参阅 make_shared
here 的文档。
如何在构造函数的初始化列表中初始化共享指针?
我有这个:
Foo::Foo (const callback &cb)
{
Bar bar;
bar.m_callback = cb;
m_ptr = std::make_shared<Bar>(bar);
//...
}
我想把它放入构造函数的初始化列表中。 类似于:
Foo::Foo (const callback &cb) :
m_ptr(std::make_shared<Bar>(?????))
{
// ...
}
栏是 struct
:
struct Bar
{
callback_type m_callback;
// etc.
};
实施构造函数 Bar::Bar( const callback & )
将是显而易见的解决方案...?!?
Foo::Foo( const callback & cb ) :
m_ptr( std::make_shared<Bar>( cb ) )
{
// ...
}
添加构造函数explicit Bar::Bar(const callback&)
。 explicit
将防止与自动转换相关的错误。然后你可以像这样初始化一个shared_ptr<Bar>
:
Foo::Foo(const callback& cb)
: m_ptr(std::make_shared<Bar>(cb))
请参阅 make_shared
here 的文档。