我目前正在使用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&)‘的匹配函数
我该怎么做呢?
发布于 2015-08-12 07:01:05
它应该是
boost::coroutines::asymmetric_coroutine<int>::pull_type coro
{
boost::bind(&MyClass::foo, this, _1);
};注意this,因为您使用成员函数。
https://stackoverflow.com/questions/31957740
复制相似问题