C++ 如何在boost::coroutine中正确使用类成员函数?

C++ 如何在boost::coroutine中正确使用类成员函数?,c++,boost,boost-bind,boost-coroutine,C++,Boost,Boost Bind,Boost Coroutine,我目前正在使用boost::asymetric_corroutine。假设我们在全局命名空间中有一个普通函数: void foo(boost::coroutines::asymmetric_coroutine<int>::push_type & sink) { //do something sink(100); //do something else } 它引发的错误是 没有匹配的函数来调用“get_pointer(const boost::coro

我目前正在使用
boost::asymetric_corroutine
。假设我们在全局命名空间中有一个普通函数:

void foo(boost::coroutines::asymmetric_coroutine<int>::push_type & sink)
{
    //do something
    sink(100);
    //do something else
}
它引发的错误是

没有匹配的函数来调用“get_pointer(const boost::coroutines::push_coroutine&)”

我该如何正确地做呢?

应该是这样的

    boost::coroutines::asymmetric_coroutine<int>::pull_type coro
    {
        boost::bind(&MyClass::foo, this, _1);
    };
boost::协程::不对称协程::拉式协程
{
boost::bind(&MyClass::foo,this,_1);
};

注意
这是因为您使用了成员函数。

对于像我一样正在寻找一种方法将不同的类成员函数用作协同程序的未来读者,下面介绍如何:
coroutine::pull_-type source{std::bind(&MyClass::my_-coroutine,&c,std::placeholder::\u 1)}
,而
c
MyClass
的一个实例。
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
    }
}
    boost::coroutines::asymmetric_coroutine<int>::pull_type coro
    {
        boost::bind(&MyClass::foo, this, _1);
    };