[英]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.