Как правильно использовать функцию-член класса с boost :: coroutine?

Я сейчас работаю с 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&)»

Как мне сделать это правильно?

1

Решение

Так должно быть

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

нота this, так как вы используете функцию-член.

2

Другие решения


По вопросам рекламы [email protected]