Ну, моя проблема - правильно передать boost::coroutines::coroutine<std::string(void)>
объект как аргумент функции. Я не могу сделать это по ссылке, потому что вызов этого метода реализуется boost::bind
и boost::asio
(есть вероятность, что этот адрес памяти будет недействительным). Итак, есть ли простой способ сделать это? Или единственный способ, который оставил меня, - упаковать этот объект в указатель?Передача boost.coroutine через аргументы функции
0
A
ответ
0
вы могли бы позволить shared_ptr управлять сопрограммой и пропускать weak_ptr для bind(). В функции обратного вызова вы можете проверить через weak_ptr, если shared_ptr все еще действует:
shared_ptr< coroutine<...> > sp = wp.lock();
if (sp) {
...
} else {
// shared_ptr was released
}
, пожалуйста, добавьте код на свой вопрос –