J’ai créé des objects en utilisant l’idiome pimpl, mais je ne suis pas sûr d’utiliser std::shared_ptr ou std::unique_ptr . Je comprends que std::unique_ptr est plus efficace, mais ce n’est pas tellement un problème pour moi, car ces objects sont relativement lourds, de sorte que le coût de std::shared_ptr sur std::unique_ptr est relativement mineur. Je vais […]
La bibliothèque standard C ++ 11 fournit-elle un utilitaire permettant de convertir un std::shared_ptr en std::shared_ptr std::unique_ptr , ou inversement? Est-ce une opération sûre?
J’essaie de “moderniser” un code existant. J’ai une classe qui a actuellement une variable membre “Device * device_”. Il utilise new pour créer une instance dans un code d’initialisation et possède un “delete device_” dans le destructory. Les fonctions membres de cette classe appellent beaucoup d’ autres fonctions qui prennent un périphérique * comme paramètre. […]
Comme ce fut le cas dans Boost, C ++ 11 fournit des fonctions pour le casting de shared_ptr : std::static_pointer_cast std::dynamic_pointer_cast std::const_pointer_cast Je me demande cependant pourquoi il n’y a pas de fonctions équivalentes pour unique_ptr . Prenons l’exemple simple suivant: class A { virtual ~A(); … } class B : public A { … […]
J’ai écrit une méthode de fabrique statique qui renvoie un nouvel object Foobar rempli à partir d’un autre object de données. J’ai récemment été obsédé par la sémantique de propriété et je me demande si je transmets le bon message en faisant en sorte que cette méthode de fabrique retourne un unique_ptr . class Foobar […]
J’ai une série de fabriques qui retournent unique_ptr . Sous le capot, cependant, ils fournissent des pointeurs vers différents types dérivés, à savoir unique_ptr , unique_ptr , unique_ptr etc. DerivedA : Derived and Derived : Base nous aurions: unique_ptr DerivedAFactory() { return unique_ptr(new DerivedA); } Ce que je dois faire est de “lancer” le pointeur […]
Est-ce la seule différence entre boost::scoped_ptr et std::unique_ptr le fait que std::unique_ptr a une sémantique de déplacement alors que boost::scoped_ptr est juste un pointeur boost::scoped_ptr get / reset?
J’ai trouvé utile d’utiliser la déclaration directe des classes en combinaison avec std::unique_ptr comme dans le code ci-dessous. Il comstack et fonctionne avec GCC, mais tout semble étrange, et je me demande si c’est un comportement standard (c’est-à-dire requirejs par la norme)? Puisque B n’est pas un type complet lorsque je déclare l’ unique_ptr . […]
En C ++ 11, vous pouvez utiliser un shared_ptr pour établir une relation de propriété avec un object ou une variable et weak_ptr pour référencer cet object en toute sécurité. Vous pouvez également utiliser unique_ptr pour établir une relation de propriété avec un object ou une variable. Mais que se passe-t-il si d’autres objects non […]
Existe-t-il une classe équivalente pour std :: unique_ptr de C ++ 1x dans les bibliothèques de boost? Le comportement que je recherche est d’être capable d’avoir une fonction usine sans risques, comme ça … std::unique_ptr create_base() { return std::unique_ptr(new Derived); } void some_other_function() { std::unique_ptr b = create_base(); // Do some stuff with b that […]