, как вы, вероятно, знаете, для Boost Thread требуется, чтобы функция memeber, являющаяся аргументом fwd, была статической.Есть обязательный способ сделать это, если он не статичен, но я предпочитаю Объект o;o.startThread () чем Object o;boost :: thread (boost :: bind ....), потому что он хранит код потока внутри класса (также обработка исключений).Так, например, это может быть переписано для работы:
class sayHello
{
string name;
public:
sayHello(string name_):name(name_)
{
}
void repeatHello()
{
while (true)
{
boost::this_thread::sleep(posix_time::seconds(3));
cout<<"Hello "<<name<<endl;
}
}
void infiniteRun()
{
boost::thread thr(repeatHello);//broken line
}
};
PS для людей, блуждающих, что такое «путь связывания» AFAIK это это:
sayHello sh("world");
boost::thread thr(boost::bind(&sayHello::repeatHello,&sh));