43 votes

cohabitation de boost :: shared_ptr et std :: shared_ptr

Notre projet est en train de rendre l'utilisation de boost. Grande nouvelle ! J'avais hâte de l'utiliser industriellement depuis un long moment.

Mais j'ai fait une première étape de retour ce matin. Pour utiliser boost::connectez-vous à un certain point, je ne peux passer un std::shared_ptr en tant que paramètre, car le compilateur (vs2010) ne peut pas le convertir en un boost::shared_ptr.

Je n'aime pas vraiment le fait qu'ils sont étrangers l'un à l'autre.

Est-il un coffre-fort et de façon transparente pour convertir l'un en l'autre, de sorte qu'ils ne trébuchez pas l'un sur l'autre ?

Je ne pense pas que c'est dupplicate de cette question que les états les deux sont les mêmes.

72voto

ronag Points 13051

Vous pouvez le faire comme ceci:

 template<typename T>
boost::shared_ptr<T> make_shared_ptr(std::shared_ptr<T>& ptr)
{
    return boost::shared_ptr<T>(ptr.get(), [ptr](T*) mutable {ptr.reset();});
}

template<typename T>
std::shared_ptr<T> make_shared_ptr(boost::shared_ptr<T>& ptr)
{
    return std::shared_ptr<T>(ptr.get(), [ptr](T*) mutable {ptr.reset();});
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X