2009-04-28 9 views
4

私はboost :: bindとスレッドの作成に関するいくつかの問題にぶつかっています。データでブーストスレッドを作成するには?

本質的には、 バインドを使用して、「スキャナ」オブジェクトに対して「スキャン」機能を呼びたいと思います。このような

何か:

Scanner scanner; 
    int id_to_scan = 1; 

    boost::thread thr1(boost::bind(&scanner::scan)); 

しかし、私は構文上につまずい取得しています。データをスキャンにどのように渡すのですか?コンストラクタの一部として?

答えて

9

メンバ関数の最初の引数がオブジェクトであることに注意してください。あなたが呼び出したい場合

boost::bind(&scanner::scan, s); 

:バインドと

scanner* s; 
s->scan() 

は、あなたが使用します。

は、だから、呼び出したい場合

s->scan(42); 

使用この:

boost::bind(&scanner::scan, s, 42); 

私は、多くの場合、バインドオブジェクトを作成するオブジェクト上で呼ばれるように結合したいので、私は頻繁にこの操作を行います。

boost::bind(&scanner::scan, this); 

幸運を。

+0

私は価値がありません:)ありがとう! –

関連する問題