无法使用 std::unique_ptr 初始化指针
Cannot initialize a pointer using std::unique_ptr
我的 class 中有一个对象,并且我在没有任何初始化的情况下声明了该对象:
std::unique_ptr<tf::TransformBroadcaster> tfb_;
然后,在构建过程中,我决定初始化我的 tfb_
:
tfb_ = std::make_unique<tf::TransformBroadcaster>(new tf::TransformBroadcaster());
我遇到一个错误:
error: no matching function for call to ‘tf::TransformBroadcaster::TransformBroadcaster(tf::TransformBroadcaster*)’
{ return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
根据我的理解,即使我不是(或者可能是?),我似乎也在试图通过一个论点。 tf::TransformBroadcaster
的头文件没什么特别的(只是一个片段):
class TransformBroadcaster{
public:
/** \brief Constructor (needs a ros::Node reference) */
TransformBroadcaster();
我尝试在头文件中使用原始指针:
tf::TransformBroadcaster* tfb_;
在我的构造函数中:
tfb_ = new TransformBroadcaster()
它奏效了。知道为什么吗?
由于 TransformBroadcaster
的构造函数中没有接受 TransformBroadcaster*
作为输入的构造函数,因此您不能使用这样的参数调用 std::make_unique<TransformBroadcaster>()
。
简而言之,这一行:
tfb_ = std::make_unique<tf::TransformBroadcaster>(new tf::TransformBroadcaster());
应该是这样的:
tfb_ = std::make_unique<tf::TransformBroadcaster>();
我的 class 中有一个对象,并且我在没有任何初始化的情况下声明了该对象:
std::unique_ptr<tf::TransformBroadcaster> tfb_;
然后,在构建过程中,我决定初始化我的 tfb_
:
tfb_ = std::make_unique<tf::TransformBroadcaster>(new tf::TransformBroadcaster());
我遇到一个错误:
error: no matching function for call to ‘tf::TransformBroadcaster::TransformBroadcaster(tf::TransformBroadcaster*)’
{ return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
根据我的理解,即使我不是(或者可能是?),我似乎也在试图通过一个论点。 tf::TransformBroadcaster
的头文件没什么特别的(只是一个片段):
class TransformBroadcaster{
public:
/** \brief Constructor (needs a ros::Node reference) */
TransformBroadcaster();
我尝试在头文件中使用原始指针:
tf::TransformBroadcaster* tfb_;
在我的构造函数中:
tfb_ = new TransformBroadcaster()
它奏效了。知道为什么吗?
由于 TransformBroadcaster
的构造函数中没有接受 TransformBroadcaster*
作为输入的构造函数,因此您不能使用这样的参数调用 std::make_unique<TransformBroadcaster>()
。
简而言之,这一行:
tfb_ = std::make_unique<tf::TransformBroadcaster>(new tf::TransformBroadcaster());
应该是这样的:
tfb_ = std::make_unique<tf::TransformBroadcaster>();