Как я могу получить возвращаемые значения из потока повышения? - PullRequest
0 голосов
/ 08 марта 2019

Я хочу сделать что-то простое, как

void returnVal(int a, int &b)
{
    b = a;
}

int main()
{
    int b = 0;
    boost::thread t(returnVal,1,b);
    t.join();
}

Это выдает ошибки. Невозможно преобразовать int & в int. Должен быть простой способ получить возвращаемые значения в boost, и если нет, у кого-нибудь есть достойное объяснение, почему?

1 Ответ

3 голосов
/ 08 марта 2019

boost::thread конструктор использует boost::bind.boost :: bind принимает свои аргументы по умолчанию для копирования, поэтому

b = a;

изменяет копию b с основного.Вам необходимо использовать boost::ref() для передачи ссылки на b в thread:

boost::thread t(returnVal,1,boost::ref(b));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...