создать функциональный объект с методом и объектом - PullRequest
1 голос
/ 17 ноября 2011

Я хочу создать функциональный объект, который может быть вызван позже (обратный вызов) из объект и функция-член этого объекта.

class A
{
public:

void AnyMethod() { cout << "Hello" << endl; }
};

int main()
{
    A a;
    function<???>f1(&A::AnyFunc, &a); // ?????

    ...
    f1();
}

Я немного запутался, потому что создать поток очень просто:

thread t1 ( &A::AnyFunc, &a); 
...
t1.join();

Это просто, если я использую его с функцией lamba, но это немного накладные расходы, которых я хочу избежать.

function<void(void)> f2( [&a](){ a.AnyFunc(); } ); // works fine

Может быть, есть лучший способ получить вызываемый объект?

1 Ответ

2 голосов
/ 17 ноября 2011
std::function<void()> f1 = std::bind(&A::AnyMethod, &a);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...