Boost :: La sérialisation a un support intégré pour boost::shared_ptr<>
. Y at-il un moyen d'utiliser ce support pour std::tr1::shared_ptr<>
aussi?
Est-il possible de passer de std::tr1::shared_ptr<>
à boost::shared_ptr<>
?Boost Serialization - Sérialiser std :: tr1 :: shared_ptr?
2
A
Répondre
3
Un moulage ne sera pas possible car les implémentations diffèrent. La création d'une instance du type shared_ptr avec la valeur renvoyée par get() sur l'autre type shared_ptr ne fonctionnera pas correctement car les comptages de référence iront à 0 à différents points de votre code, ce qui entraînera la suppression de l'objet avant le dernier. utilisation de celui-ci. Je ne suis pas un expert de boost :: serialization mais comme les interfaces de std :: tr1 :: shared_ptr <> et boost :: shared_ptr <> sont presque identiques il est très probable que vous pouvez simplement cloner le code de sérialisation/désérialisation de boost :: shared_ptr <> et il suffit de remplacer l'espace de nom du shared_ptr.
Si vous pouvez utiliser boost de toute façon, pourquoi n'utilisez-vous pas simplement boost? Shared_ptr' en premier lieu? – ereOn
Cause l'interface est indépendante du boost. L'utilisation de boost :: serialization pour sérialiser les classes est juste un détail d'implémentation. Si, plus tard, un autre développeur décide d'utiliser une autre implémentation pour la sérialisation, le projet dépendra toujours du boost. – MOnsDaR
Pourquoi n'utiliser pas simplement 'typedef boost :: shared_ptr MySharedPtr', donc votre code ne dépendrait pas de boost, mais de typedef-dependent. Vous pouvez changer à la fois la bibliothèque de sérialisation et typedefs dans le futur. –