【问题标题】:Mixing boost smart pointers and C++11 smart pointers in boost::signals2在 boost::signals2 中混合 boost 智能指针和 C++11 智能指针
【发布时间】:2014-03-16 23:18:21
【问题描述】:

我有一个应用程序使用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> &'

有解决办法吗?还是我误解了问题?

【问题讨论】:

标签: c++ c++11 boost


【解决方案1】:

我找到了一个解决方案,那就是使用.track_foreign 而不是.track。它允许使用 C++11 智能指针代替 boost 智能指针。

【讨论】:

    【解决方案2】:

    在 C++ 和编译器看来,std::weak_ptrboost::weak_ptr 是两个完全不同的类,没有任何共同之处。因此,当您使用boost::signals2 时,我建议您坚持使用boost::weak_ptr

    【讨论】:

    • 刚刚找到了一个解决方案,但是是的,这也是我的想法。现在写下我的答案。
    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2012-01-10
    相关资源
    最近更新 更多