Als «unique-ptr» getaggte Fragen

std :: unique_ptr ist ein intelligenter Zeiger, der über einen Zeiger das alleinige Eigentum an einem Objekt behält. unique_ptr kann nicht kopiert oder kopiert werden. Zwei Instanzen von unique_ptr können nicht dasselbe Objekt verwalten.

6
Wie übergebe ich ein unique_ptr-Argument an einen Konstruktor oder eine Funktion?
Ich bin neu in der Verschiebung der Semantik in C ++ 11 und weiß nicht genau, wie ich mit unique_ptrParametern in Konstruktoren oder Funktionen umgehen soll . Betrachten Sie diese Klasse, die sich selbst referenziert: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void …

5
Rückgabe von unique_ptr von Funktionen
unique_ptr<T>erlaubt keine Kopierkonstruktion, sondern unterstützt die Verschiebungssemantik. Dennoch kann ich a zurückgebenunique_ptr<T> von einer Funktion zurückgeben und den zurückgegebenen Wert einer Variablen zuweisen. #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // 1 //return move( p ); // 2 } int …
367 c++  c++11  unique-ptr 



2
Warum kann ich ein unique_ptr nicht in einen Vektor zurückschieben?
Was ist los mit diesem Programm? #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; } Der Fehler: 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 und perfekte Weiterleitung
Warum gibt es std::make_uniquein der Standard-C ++ 11-Bibliothek keine Funktionsvorlage? ich finde std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); ein bisschen ausführlich. Wäre das Folgende nicht viel schöner? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Dies verbirgt das newschön und erwähnt den Typ nur einmal. Wie auch immer, hier ist mein Versuch einer …

6
std :: unique_ptr mit einem unvollständigen Typ wird nicht kompiliert
Ich benutze das Pimpl-Idiom mit std::unique_ptr: class window { window(const rectangle& rect); private: class window_impl; // defined elsewhere std::unique_ptr<window_impl> impl_; // won't compile }; Ich erhalte jedoch einen Kompilierungsfehler bezüglich der Verwendung eines unvollständigen Typs in Zeile 304 in <memory>: Ungültige Anwendung von ' sizeof' auf einen unvollständigen Typ ' …

4
std :: auto_ptr bis std :: unique_ptr
Mit dem neuen Standard (und Teilen, die bereits in einigen Compilern verfügbar sind) soll der neue Typ std::unique_ptrein Ersatz für sein std::auto_ptr. Überlappt sich ihre Verwendung genau (damit ich meinen Code global suchen / ersetzen kann (nicht, dass ich dies tun würde, aber wenn ich es tun würde)) oder sollte …

2
Verwenden intelligenter Zeiger für Klassenmitglieder
Ich habe Probleme, die Verwendung intelligenter Zeiger als Klassenmitglieder in C ++ 11 zu verstehen. Ich habe viel über intelligente Zeiger gelesen und glaube zu verstehen, wie unique_ptrund shared_ptr/ oder wie ich weak_ptrim Allgemeinen arbeite. Was ich nicht verstehe, ist die tatsächliche Verwendung. Es scheint, als würde jeder empfehlen unique_ptr, …

6
Wie verwende ich einen benutzerdefinierten Löscher mit einem std :: unique_ptr-Mitglied?
Ich habe eine Klasse mit einem unique_ptr-Mitglied. class Foo { private: std::unique_ptr<Bar> bar; ... }; Die Leiste ist eine Klasse von Drittanbietern mit einer Funktion create () und einer Funktion destroy (). Wenn ich a std::unique_ptrdamit in einer eigenständigen Funktion verwenden wollte, könnte ich Folgendes tun: void foo() { std::unique_ptr<Bar, …





7
Wie kann ich std :: unique_ptr an eine Funktion übergeben?
Wie kann ich ein std::unique_ptrin eine Funktion übergeben? Nehmen wir an, ich habe folgende Klasse: class A { public: A(int val) { _val = val; } int GetVal() { return _val; } private: int _val; }; Folgendes wird nicht kompiliert: void MyFunc(unique_ptr<A> arg) { cout << arg->GetVal() << endl; } …
97 c++  c++11  unique-ptr 

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.