In meinem Code, ich habeC++ Shared_ptr Reihenfolge der Veröffentlichung
void Test(){
std::shared_ptr<A> a = std::shared_ptr<A>(new A());
std::shared_ptr<B> b = std::shared_ptr<B>(new B(a->getSomething());
}
Das Problem ist, dass a
vor b
freigegeben wird, aber während b
Release Ich brauche etwas von a
, dass über a->getSomethig()
erhalten. Ich kann getSomething
Methode nicht ändern.
Kann ich die Reihenfolge ändern, in der freigegebene Zeiger freigegeben werden?
In dem Code hier, b Destruktor wird vor a genannt. Ich sehe das Problem nicht – Justin
Können Sie dann eine MVCE teilen? Grundlegend Sharecode, der 'a' vor' b' zerstört hat, damit wir Ihr Problem besser verstehen können – Justin
Halten Sie einen gemeinsamen Zeiger auf A in B –