2016-07-25 12 views
-3

私は、STDに実行したいクラスのメンバ関数::スレッドを持っており、次のようにそれは、パラメータとしての機能を期待:関数をパラメータとして期待する関数を呼び出すstd :: threadを開始するにはどうすればよいですか?

ModbusAgent::poolingThread(int position, std::function<int(int, uint16_t*)> readFunction) 

そこで質問です:どのように私はSTDをインスタンス化することができます:それを呼び出すスレッド?だからここ

+1

あなたがあなた自身を提起し、回答この質問は[SOドキュメント](http://stackoverflow.comに最も適していると思いませんか/ドキュメンテーション)? – WhiZTiM

+0

関数パラメータの特別な機能は何ですか?それは単なる別のパラメータです。 – Barry

+0

ラムダを使用する方がはるかに簡単です – nishantjr

答えて

-2

は、私はそれを行う見つかり方法です:

class A { 
public: 
    int bar(int, uint16_t*) { return 0; } 

    void foo(int position, std::function<int(int, uint16_t*)> readFunction) { 
      readFunction(position, nullptr); 
    } 

    void b() { 
     std::function<int(int, uint16_t*)> readFunction = std::bind(&A::bar, *this, std::placeholders::_1, std::placeholders::_2); 
     std::thread(&A::foo, this, 5, readFunction); 
    } 
}; 


int main() { 
    A a; 
    a.b(); 
} 
関連する問題