Доступ к 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> остается в области. То, что вы делаете, прекрасно.

Другие вопросы по тегам