Доступ к shared_ptr в расширенном диспетчере
Я использую диспетчер наддува (io_service) для асинхронного выполнения "methodB". В этом методе я хотел бы сохранить указатель на экземпляр класса B, поэтому я использую shared_ptr. Но в приведенном ниже примере мне интересно, будет ли после области действия "methodA" указатель по-прежнему доступен для "methodB", или если refcounter указателя будет равен нулю.
void ClassA::methodA(){
shared_ptr<ClassB> pointer(new ClassB);
m_dispatcher.post(boost::bind(&ClassA::methodB, this, pointer); // boost io_service
}
void ClassA::methodB(shared_ptr<ClassB> pointer){
ClassB *p = pointer.get(); // access to pointer ???
}
Большое вам спасибо.
1 ответ
Решение
С помощью boost::bind
таким образом будут копировать аргументы обеспечения shared_ptr<ClassB>
остается в области. То, что вы делаете, прекрасно.