/ / Jak poprawnie korzystać z funkcji członka klasy dzięki boost :: coroutine? - c ++, boost, boost-bind, boost-coroutine

Jak poprawnie korzystać z funkcji członka klasy dzięki boost :: coroutine? - c ++, boost, boost-bind, boost-coroutine

Obecnie pracuję z boost::asymmetric_coroutine. Powiedzmy, że mamy zwykłą funkcję w globalnym obszarze nazw:

void foo(boost::coroutines::asymmetric_coroutine<int>::push_type & sink)
{
//do something
sink(100);
//do something else
}

W takim przypadku możemy utworzyć i wykonać współprogram za pomocą tej funkcji w następujący sposób:

boost::coroutines::asymmetric_coroutine<void>::pull_type coro{foo};

Muszę użyć funkcji członka klasy w ten sam sposób. Tak jak rozumiem, boost::bind należy jakoś użyć, jednak poniższy kod nie działa:

class MyClass
{
public:
void create_coro()
{
boost::coroutines::asymmetric_coroutine<int>::pull_type coro
{
boost::bind(&MyClass::foo, _1);
};
}

private:
void foo(boost::coroutines::asymmetric_coroutine<int>::push_type & sink)
{
//do something
}
}

Błąd, który podnosi

brak pasującej funkcji do wywołania "get_pointer (const boost :: coroutines :: push_coroutine &)"

Jak zrobić to poprawnie?

Odpowiedzi:

2 dla odpowiedzi № 1

Powinno być

    boost::coroutines::asymmetric_coroutine<int>::pull_type coro
{
boost::bind(&MyClass::foo, this, _1);
};

Uwaga this, ponieważ używasz funkcji członka.