我使用boost调度程序(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 ???
}
非常感谢你。
答案 0 :(得分:1)
以这种方式使用boost::bind
将复制确保shared_ptr<ClassB>
保留在范围内的参数。你正在做的事情非常好。