Domande taggate «unique-ptr»

std :: unique_ptr è un puntatore intelligente che mantiene la proprietà esclusiva di un oggetto tramite un puntatore. unique_ptr non è copiabile o assegnabile tramite copia, due istanze di unique_ptr non possono gestire lo stesso oggetto.


5
Restituisce unique_ptr dalle funzioni
unique_ptr<T>non consente la costruzione di copie, ma supporta la semantica di spostamento. Tuttavia, posso restituire a unique_ptr<T>da una funzione e assegnare il valore restituito a una variabile. #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // 1 //return move( p ); …
367 c++  c++11  unique-ptr 



2
Perché non posso push_back un unique_ptr in un vettore?
Cosa c'è di sbagliato in questo programma? #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'errore: 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 e perfetto inoltro
Perché non esiste un std::make_uniquemodello di funzione nella libreria C ++ 11 standard? io trovo std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); un po 'prolisso. Quanto segue non sarebbe molto più bello? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Questo nasconde newbene e menziona il tipo solo una volta. Ad ogni modo, ecco …

6
std :: unique_ptr con un tipo incompleto non verrà compilato
Sto usando l'idioma pimpl con std::unique_ptr: class window { window(const rectangle& rect); private: class window_impl; // defined elsewhere std::unique_ptr<window_impl> impl_; // won't compile }; Tuttavia, viene visualizzato un errore di compilazione relativo all'uso di un tipo incompleto, nella riga 304 in <memory>: Applicazione non valida di " sizeof" a un …

4
std :: auto_ptr in std :: unique_ptr
Con il nuovo standard in arrivo (e parti già disponibili in alcuni compilatori), il nuovo tipo std::unique_ptrdovrebbe essere un sostituto per std::auto_ptr. Il loro utilizzo si sovrappone esattamente (quindi posso fare una ricerca / sostituzione globale sul mio codice (non che lo farei, ma se lo facessi)) o dovrei essere …







6
Perché usare std :: make_unique in C ++ 17?
Per quanto ho capito, C ++ 14 è stato introdotto std::make_uniqueperché, a causa della mancata specificazione dell'ordine di valutazione dei parametri, questo non era sicuro: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Spiegazione: se la valutazione alloca prima la memoria per il puntatore non elaborato, quindi chiama g()e viene generata un'eccezione …
96 c++  c++17  unique-ptr 

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.