0

次のステートメントを使用して、メンバー関数をスレッド関数として呼び出してみました

boost::thread getURInHashThread(boost::bind(&Worker::run, this));

どこ

Worker 

はクラスであり、

run()

方法です。Worker同じクラスの別のメンバー関数にこのステートメントがあるので、それを与えましたthis

しかし、私はエラーが発生しています

error:bind is not a member of boost.

私はそれを理解することができません。助けてください。前もって感謝します :)。

#include <boost/thread/thread.hpp>
#include <iostream>

class Test
{
 public:
  void Main() { boost::thread t(&Test::run, this); }
  void run() { while(1){  std::cout << "some functionality here"; } }
};

int main()
{
   Test test;
   test.Main();
}
4

1 に答える 1

0

ブーストスレッドはバインドを内部的に使用するため、次のようになります。

#include <boost/thread/thread.hpp>
#include <iostream>

class Test
{
public:
  void Main() { std::cout << "hello" << std::endl; }
};

int main()
{
  Test test;
  boost::thread t(&Test::Main, test);
  t.join();
}
于 2012-11-23T10:26:33.410 に答える