Articles of unique ptr

Devrais-je utiliser shared_ptr ou unique_ptr

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 […]

Est-ce que C ++ 11 unique_ptr et shared_ptr est capable de se convertir les uns aux autres?

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?

Passer unique_ptr aux fonctions

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. […]

Casting dynamic pour unique_ptr

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 { … […]

Mauvaise pratique pour renvoyer unique_ptr pour le pointeur brut comme la sémantique de propriété?

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 […]

“Downcasting” unique_ptr to unique_ptr

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 […]

Différence entre boost :: scoped_ptr et std :: unique_ptr

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?

Déclaration en avant avec unique_ptr?

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 . […]

shared_ptr est à faiblesse_ptr comme unique_ptr est à… quoi?

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 […]

unique_ptr boost équivalent?

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 […]