簡體   English   中英

在boost :: signals2中混合使用boost智能指針和C ++ 11智能指針

[英]Mixing boost smart pointers and C++11 smart pointers in boost::signals2

我有一個應用程序,它使用boost::signals2在組件之間進行通信。 我試圖通過slot_type(...).track(weak_ptr)來使用它的自動連接管理功能。

問題:

在我的程序中,使用了std::shared_ptr .track期望一個boost::weak_ptr ,我提供了一個std::weak_ptr

這是我得到的確切錯誤:

cannot convert argument 1 from 'std::weak_ptr<_Ty>' to 'const boost::weak_ptr<void> &'

這有解決方法嗎? 或者我誤解了這個問題?

我找到了一個解決方案,它使用的是.track_foreign而不是.track 它允許使用C ++ 11智能指針代替boost智能指針。

對於C ++而言,編譯器, std::weak_ptrboost::weak_ptr是兩個完全不同的類,沒有任何共同之處。 因此,當你使用boost::signals2我建議你堅持使用boost::weak_ptr

暫無
暫無

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

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