好吧,我的问题是将boost::coroutines::coroutine<std::string(void)>
对象正确传递为函数参数。我不能通过引用来做到这一点,因为调用此方法是由boost::bind
和boost::asio
实现的(此内存地址可能无效)。那么,有没有简单的方法呢?或者离开我的唯一方法是将这个对象打包成指针?
答案 0 :(得分:0)
你可以让shared_ptr管理协程并将weak_ptr传递给bind()。在回调函数中,如果shared_ptr仍然有效,您可以通过weak_ptr进行检查:
shared_ptr< coroutine<...> > sp = wp.lock();
if (sp) {
...
} else {
// shared_ptr was released
}