簡體   English   中英

無法使用std :: unique_ptr初始化指針

[英]Cannot initialize a pointer using std::unique_ptr

我在類中有一個對象,並且已聲明該對象而未進行任何初始化:

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>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM