2013-11-18 2 views
0

Ну, моя проблема - правильно передать boost::coroutines::coroutine<std::string(void)> объект как аргумент функции. Я не могу сделать это по ссылке, потому что вызов этого метода реализуется boost::bind и boost::asio (есть вероятность, что этот адрес памяти будет недействительным). Итак, есть ли простой способ сделать это? Или единственный способ, который оставил меня, - упаковать этот объект в указатель?Передача boost.coroutine через аргументы функции

+0

, пожалуйста, добавьте код на свой вопрос –

ответ

0

вы могли бы позволить shared_ptr управлять сопрограммой и пропускать weak_ptr для bind(). В функции обратного вызова вы можете проверить через weak_ptr, если shared_ptr все еще действует:

shared_ptr< coroutine<...> > sp = wp.lock(); 
if (sp) { 
... 
} else { 
// shared_ptr was released 
} 
Смежные вопросы