Questions marquées «unique-ptr»

std :: unique_ptr est un pointeur intelligent qui conserve la propriété exclusive d'un objet via un pointeur. unique_ptr n'est ni copiable ni assignable par copie, deux instances de unique_ptr ne peuvent pas gérer le même objet.

6
Comment passer un argument unique_ptr à un constructeur ou à une fonction?
Je suis nouveau pour déplacer la sémantique en C ++ 11 et je ne sais pas très bien comment gérer les unique_ptrparamètres dans les constructeurs ou les fonctions. Considérez cette classe se référençant elle-même: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr …

5
Renvoyer unique_ptr à partir des fonctions
unique_ptr<T>ne permet pas la construction de copie, mais prend en charge la sémantique de déplacement. Pourtant, je peux retourner un à unique_ptr<T>partir d'une fonction et affecter la valeur retournée à une variable. #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // …
367 c++  c++11  unique-ptr 



2
Pourquoi ne puis-je pas repousser un unique_ptr dans un vecteur?
Quel est le problème avec ce programme? #include <memory> #include <vector> int main() { std::vector<std::unique_ptr<int>> vec; int x(1); std::unique_ptr<int> ptr2x(&x); vec.push_back(ptr2x); //This tiny command has a vicious error. return 0; } L'erreur: In file included from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/c++allocator.h:34:0, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/allocator.h:48, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/memory:64, from main.cpp:6: c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const …

6
make_unique et transfert parfait
Pourquoi n'y a-t-il pas de std::make_uniquemodèle de fonction dans la bibliothèque C ++ 11 standard? je trouve std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); un peu bavard. Les éléments suivants ne seraient-ils pas beaucoup plus agréables? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Cela cache newbien et ne mentionne le type qu'une seule …

6
std :: unique_ptr avec un type incomplet ne compilera pas
J'utilise le pimpl-idiom avec std::unique_ptr: class window { window(const rectangle& rect); private: class window_impl; // defined elsewhere std::unique_ptr<window_impl> impl_; // won't compile }; Cependant, j'obtiens une erreur de compilation concernant l'utilisation d'un type incomplet, à la ligne 304 dans <memory>: Application non valide de ' sizeof' à un type incomplet …

4
std :: auto_ptr vers std :: unique_ptr
Avec l'arrivée du nouveau standard (et des pièces déjà disponibles dans certains compilateurs), le nouveau type std::unique_ptrest censé remplacer std::auto_ptr. Leur utilisation se chevauche-t-elle exactement (pour que je puisse faire une recherche / remplacement globale sur mon code (non pas que je le ferais, mais si je le faisais)) ou …







6
Pourquoi utiliser std :: make_unique en C ++ 17?
Pour autant que je sache, C ++ 14 a été introduit std::make_uniquecar, en raison de la non-spécification de l'ordre d'évaluation des paramètres, ce n'était pas sûr: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Explication: si l'évaluation alloue d'abord la mémoire pour le pointeur brut, puis appelle g()et une exception est levée …
96 c++  c++17  unique-ptr 

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.