2016-03-15 5 views
1

Я хотел бы запустить тип std :: function в отдельном потоке. Мой код в настоящее время выглядит следующим образом:Запуск потока с использованием типа переменной std :: function

struct bar 
{ 
    std::function<void(int,int)> var; 
}; 

struct foo 
{ 
    bar* b; 

    foo() 
    { 
     std::thread t(b->var); //Error attempt to use a deleted function 
    } 
}; 

Почему я получаю попытка использовать удаленную функцию здесь?

+0

Ошибка компилятора сообщает вам, какая удаленная функция есть, что будет большой подсказкой. К сожалению, вы почему-то оставили эту часть из-за вопроса. –

+0

В вашем примере полно ошибок. Но что-то вроде этого должно выполнить эту задачу: 'std :: thread (& bar :: var, b, 12, 12)' – knivil

+0

Вы намеренно не устанавливаете 'b' на что-нибудь? – Soren

ответ

3

Ваша переменная b->var - это функция, которая принимает два параметра. Вам необходимо отправить эти параметры, чтобы они работали.

struct bar 
{ 
    std::function<void(int,int)> var; 
}; 

struct foo 
{ 
    bar* b; 
    foo() 
    { 
     std::thread t(b->var, 76, 89); // will call b->var(76, 89) 
    } 
}; 
+0

Вы пытались его скомпилировать? – knivil

+0

отредактировал мой ответ, чтобы исправить эти ошибки. Благодаря! –