[英]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_ptr
和boost::weak_ptr
是兩個完全不同的類,沒有任何共同之處。 因此,當你使用boost::signals2
我建議你堅持使用boost::weak_ptr
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.