c++ - 如何传递一个non-copyable的函数对象给std::function?
天蓬老师
天蓬老师 2017-04-17 15:33:18
0
1
609
#include <memory>
#include <functional>

class A{    //non-copyable
    std::unique_ptr<int> a;
public:
    void operator()(){}    //non-const
};

void func(std::function<void(void)> f)
{}

int main()
{
    A fobj;
    func(fobj);
    return 0;
}

如上,需要传递一个A的函数对象给func,并且fobj不能是const型的。怎样实现呢?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(1)
巴扎黑

次のオプションが利用可能です:

  • A のリファレンスを使用します。デメリット:Aが破壊されると参照が無効になります。

  • 移動セマンティクスを使用してshared_ptrを構築します。欠点: 実行時のオーバーヘッドが追加され、移動可能な構造が必要になります。

リーリー
  • または、コピー時にオブジェクトを移動するラッパーを介して (移動可能な構成が必要):

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート