Я сейчас работаю с boost::asymmetric_coroutine
, Допустим, у нас есть обычная функция в глобальном пространстве имен:
void foo(boost::coroutines::asymmetric_coroutine<int>::push_type & sink)
{
//do something
sink(100);
//do something else
}
В этом случае мы можем создать и выполнить сопрограмму с помощью этой функции следующим образом:
boost::coroutines::asymmetric_coroutine<void>::pull_type coro{foo};
Что мне нужно сделать, это использовать функцию-член класса таким же образом. Как я понимаю, boost::bind
следует использовать как-то, однако следующий код не работает:
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
}
}
Возникающая ошибка
нет соответствующей функции для вызова get_pointer (const boost :: coroutines :: push_coroutine&)»
Как мне сделать это правильно?
Так должно быть
boost::coroutines::asymmetric_coroutine<int>::pull_type coro
{
boost::bind(&MyClass::foo, this, _1);
};
нота this
, так как вы используете функцию-член.