Tag: unique-ptr
std::unique_ptr ist ein smart pointer, behält die alleinige Verantwortung für ein Objekt durch einen Zeiger. unique_ptr ist nicht kopierbar oder kopieren, abzutreten, zu zwei Instanzen von unique_ptr nicht verwalten können das gleiche Objekt.
3
Antworten
Habe ich eine Klasse, die so aussieht: template<typename T> using VectorPtr=std::vector<std::unique_ptr<T>>; template<typename T> using VectorRawPtr=std::vector<T*>; class ItemsSet{ //<-- Compiler say this line contans an error 0_o ? public: ItemsSet(VectorPtr<Item>& items); ~ItemsSet() = default; VectorRawPtr<Item> GetItems(); VectorRawPtr<Item> GetSuitableItemsForPeriod(const
1
Antworten
Ich würde gerne verschieben Sie den unique_ptr ' s werden in einer unsortierten Vektor in ein Vektor, enthält die sortierten Vektor von Zeigern. Sicherlich verschieben eines unique_ptr nicht automatisch löschen das element in der ersten Vektor? Wie
5
Antworten
In C++ How to Programm es einen Absatz gibt, die sagen: Üblich, Programmierung besteht in der Allokation von dynamischem Speicher zuweisen der Adresse dass der Speicher für einen Zeiger, verwenden Sie den Mauszeiger zu manipulieren, um die
2
Antworten
Lernen C++ ich bin ein Spiel Programmieren. In diesem Spiel können zwei Spieler. Diejenigen Spieler, die in der Lage sind, miteinander zu verbinden mit sockets. Nach dem hinzufügen eines Vektors mit eindeutiger Zeiger auf das player-header, bekam
2
Antworten
Die Frage passt wirklich in den Titel: ich bin neugierig zu wissen, was ist der technische Grund für diesen Unterschied, sondern auch die Begründung ? std::shared_ptr<void> sharedToVoid; //legal; std::unique_ptr<void> uniqueToVoid; //ill-formed; InformationsquelleAutor Ad N | 2016-09-02
3
Antworten
Ich verwendet, um den Speicher in mein C++ Projekt mit neuen char* buffer = new char [size]; ... delete buffer; und ich möchte wirklich, um vorwärts zu bewegen, und verwenden Sie unique_ptr, wie diese unique_ptr<char>buffer(new char[size]); aber
1
Antworten
Ich versuche, herauszufinden, wie/ob ich die verwenden kann unique_ptr im queue. //create queue std::queue<std::unique_ptr<int>> q; //add element std::unique_ptr<int> p (new int{123}); q.push(std::move(p)); //try to grab the element auto p2 = foo_queue.front(); q.pop(); Verstehe ich, warum der code
1
Antworten
Was ist die richtige Art und Weise der übertragung von Eigentum an einem std::vector<unique_ptr<int> > zu einer Klasse erstellt? Unten ist ein code-Darstellung, was ich tun möchte. Ich weiß, es ist nicht korrekt (nicht kompiliert) und gegen
3
Antworten
Ich versuche, einen unique_ptr zu abgeleiteten Klasse in eine Funktion, der eine unique_ptr auf eine Basisklasse. So etwas wie: class Base {}; class Derived : public Base {}; void f(unique_ptr<Base> const &base) {} … unique_ptr<Derived> derived =
2
Antworten
Ich bin C++11-ing code. Ich habe class X { /* */ }; class A { std::vector<X*> va_x; }; class B { std::vector<X*> vb_x; std::vector<A> vb_a; }; X*s "va_x" in meiner Klasse Einen Punkt, um Objekte, wies auch
7
Antworten
Habe ich ein double array zugewiesen Zeiger auf Zeiger. //pointer to pointer int **x = new int *[5]; //allocation for (i=0; i<5; i++){ x[i] = new int[2]; } for (i=0; i<5; i++){ //assignment for (j=0; j<2; j++){
5
Antworten
Ich würde gerne ein Vektor von unique_ptr ist als Mitglied einer Klasse, die ich mache. class Foo { [...] private: vector<unique_ptr<Bar>> barList; } Aber dann fange ich kryptische Fehlermeldungen aus der VS2010 compiler: error C2248: 'std::unique_ptr<_Ty>::operator ='
2
Antworten
Ich versuche zu verwenden std::make_unique instantiieren einer Klasse, deren Konstruktor erhalten, der eine std::initializer_list. Hier ein minimal-Fall : #include <string> #include <vector> #include <initializer_list> #include <memory> struct Foo { Foo(std::initializer_list<std::string> strings) : strings(strings) {} std::vector<std::string> strings; };
1
Antworten
Ich bin, fangen einen compile-Fehler, wenn Sie versuchen zu verwenden unique_ptr auf Apple-Plattformen mit -std=c++11: $ make c++ -std=c++11 -DNDEBUG -g2 -O3 -fPIC -march=native -Wall -Wextra -pipe -c 3way.cpp In file included ... ./smartptr.h:23:27: error: no type
2
Antworten
Erste von allen, ich weiß, dies ist nicht der beste Weg, dies zu tun, ich bin gerade auf der Suche, wie es getan werden sollte. Ich erstellt eine Klasse namens bord,hält ein Mitglied std::unique_ptr<std::unique_ptr<char> > char_bord; Sollte
1
Antworten
Habe ich eine Reihe von Fabriken, die Rückkehr unique_ptr<Base>. Unter der Haube, obwohl, die Zeiger auf verschiedene abgeleitete Typen, ich.e unique_ptr<Derived>, unique_ptr<DerivedA>, unique_ptr<DerivedB>etc. Gegeben DerivedA : Derived und Derived : Base hätten wir: unique_ptr<Base> DerivedAFactory() { return
6
Antworten
Ich bin mit dem 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 }; Allerdings bekomme ich einen compile-Fehler in Bezug auf die Nutzung eines unvollständigen Typ, auf
1
Antworten
Versuchen, kompilieren Sie den folgenden code: #include <iostream> #include <memory> struct Foo { Foo() { std::cout << "Foo::Foo\n"; } ~Foo() { std::cout << "Foo::~Foo\n"; } void bar() { std::cout << "Foo::bar\n"; } }; void f(const Foo &foo)
2
Antworten
Alle, Wenn ich die Instanzierung eines widgets array mit einer Initialisierer-Liste format eine Nackte Zeiger, der zeigt auf eine member-variable widget-Instanz kompiliert, aber nach dem Wechsel zu std::unique_ptr<> gcc gibt einen Kompilierungsfehler in Bezug auf eine gelöschte
2
Antworten
In meinem Programm habe ich eine Reihe von Objekten einer benutzerdefinierten Klasse Position. Die Erklärung der Position ist wie folgt: class Position { public: Position(int x, int y); ~Position(); Actor *getActor() { return actor.get(); }; void setActor(Actor
4
Antworten
Ich habe eine Funktion, zurückgeben muss, die einen Zeiger auf ein Objekt der Klasse myClass. Für diesen Zweck Im mit std::unique_ptr. Wenn die Funktion erfolgreich ist, es wird wieder ein Zeiger auf ein Objekt mit Daten. Wenn
2
Antworten
Dieser code ist, was ich tun will: Tony& Movie::addTony() { Tony *newTony = new Tony; std::unique_ptr<Tony> tony(newTony); attachActor(std::move(tony)); return *newTony; } Frage ich mich, wenn ich dies tun könnte, statt: Tony& Movie::addTony() { std::unique_ptr<Tony> tony(new Tony); attachActor(std::move(tony));
3
Antworten
Ich habe eine Klassen-Hierarchie wie folgt: class BaseSession : public boost::enable_shared_from_this<BaseSession> class DerivedSessionA : public BaseSession class DerivedSessionB : public BaseSession Innerhalb der abgeleiteten Klasse Funktionen, die ich regelmäßig aufrufen von Funktionen wie diese: Func(boost::dynamic_pointer_cast<DerivedSessionA>(shared_from_this())); Da ich
3
Antworten
Ich verstehen, dass die Verwendung static_pointer_cast mit unique_ptr würde dazu führen, dass eine gemeinsame Verantwortung, die darin enthaltenen Daten. In anderen Worten, was ich tun möchte ist: unique_ptr<Base> foo = fooFactory(); //do something for a while unique_ptr<Derived>
4
Antworten
Denke, ich habe den folgenden code: class B { /* */ }; class A { vector<B*> vb; public: void add(B* b) { vb.push_back(b); } }; int main() { A a; B* b(new B()); a.add(b); } Angenommen, dass
3
Antworten
Bei der übergabe von Objekten an Funktionen, die selben Regeln gelten für smart-Pointer auf andere Objekte enthalten dynamische Speicher? Wenn ich den pass, zum Beispiel eine std::vector<std::string> in eine Funktion, die ich immer sollten Sie die folgenden
6
Antworten
Wie kann ich passiere ein std::unique_ptr in eine Funktion? Können sagen, ich habe die folgende Klasse: class A { public: A(int val) { _val = val; } int GetVal() { return _val; } private: int _val; };
1
Antworten
Habe ich eine Klasse A hat ein Feld vom Typ std::unique_ptr: class A { public: std::unique_ptr pointer; //class body }; Und irgendwo im code, bin ich mit paar std::shared_ptrs, die auf das gleiche Objekt zeigen. Nun, was
4
Antworten
Ich habe vor kurzem umgestellt auf C++11 und ich bin versucht zu bekommen, verwendet, um gute Praktiken gibt. Was ich am Ende, die sich sehr oft so etwas wie: class Owner { private: vector<unique_ptr<HeavyResource>> _vectorOfHeavyResources; public: virtual
6
Antworten
#include <memory> class bar{}; void foo(bar &object){ std::unique_ptr<bar> pointer = &object; } Will ich weisen Sie eine Adresse des Objekts, auf den Zeiger. Der obige code natürlich nicht kompilieren, da die Rechte Seite des zuweisungsoperators muss eine
5
Antworten
Wie implementiere ich ein copy-Konstruktor für eine Klasse, die eine unique_ptr member-variable? Ich bin nur in C++11. InformationsquelleAutor der Frage codefx | 2013-04-16
2
Antworten
Möchte ich weitergeben eine unique_ptr um eine Hilfsfunktion, und ich möchte sicherstellen, dass die Helfer-Funktion ändert weder der Mauszeiger, noch die Spitzen Objekt. Ohne die unique_ptrdie Lösung zu haben void takePtr(AClass const * const aPtr) { //Do
1
Antworten
Ist dieses code-fragment gültig? : unique_ptr<A> p( new A()); p = nullptr; Ist, kann ich zuweisen nullptrzu einem unique_ptr ? oder wird es scheitern? Habe ich versucht, diese mit der g++ compiler und es hat funktioniert, aber
5
Antworten
Ich habe versucht, die folgenden: std::function<void ()> getAction(std::unique_ptr<MyClass> &&psomething){ //The caller given ownership of psomething return [psomething](){ psomething->do_some_thing(); //psomething is expected to be released after this point }; } Aber nicht kompilieren. Irgendwelche Ideen? UPDATE: WIE vorgeschlagen,
3
Antworten
Ich versuche zu verstehen, wie std::unique_ptr arbeitet und für die, die ich gefunden diese Dokument. Der Autor beginnt ab dem folgenden Beispiel: #include <utility> //declarations of unique_ptr using std::unique_ptr; //default construction unique_ptr<int> up; //creates an empty object
5
Antworten
Gibt es einige gleichwertige Klasse für C++1x die std::unique_ptr in den boost-Bibliotheken? Das Verhalten, die ich Suche, ist die Möglichkeit, mit einer Ausnahme-safe-factory-Funktion, wie so... std::unique_ptr<Base> create_base() { return std::unique_ptr<Base>(new Derived); } void some_other_function() { std::unique_ptr<Base> b
6
Antworten
Als es der Fall war in Boost, C++11 bietet einige Funktionen für das casting shared_ptr: std::static_pointer_cast std::dynamic_pointer_cast std::const_pointer_cast Frage ich mich allerdings, warum gibt es keine äquivalenten Funktionen für unique_ptr. Betrachten Sie das folgende einfache Beispiel: class
5
Antworten
Ich bin versucht zu "modernisieren" einige der bestehenden code. Ich habe eine Klasse, die derzeit hat eine member-variable "- Gerät* device_". Es wird mit new eine Instanz zu schaffen, die in Initialisierungscode und hat ein "löschen device_"
2
Antworten
Ich denke, das ist peinlich, wenn ich Ihnen sagte, dass ich kippe diese zu kompilieren. würden Sie mir bitte helfen: #include<memory> using namespace std; int main() { std::unique_ptr<int> p1(new int(5)); return 0; } $ gcc main.cpp main.cpp:
3
Antworten
Ich bin verwirrt mit unique_ptr und rvalue verschieben Philosophie. Sagen wir, wir haben zwei Kollektionen: std::vector<std::auto_ptr<int>> autoCollection; std::vector<std::unique_ptr<int>> uniqueCollection; Nun würde ich erwarten, dass die folgenden scheitern, denn es ist nicht abzusehen, was der Algorithmus tut, innerlich
5
Antworten
Was ist der richtige Weg, um erstellen Sie einen unique_ptr, enthält ein array zugewiesen wird, die auf der free store? Visual studio 2013 unterstützt dies standardmäßig, aber wenn ich die gcc version 4.8.1 auf Ubuntu bekomme ich
1
Antworten
Ich habe folgenden batch-code: std::vector<std::unique_ptr<AVLTree_GeeksforGeeks>> AVLArray(100000); /* Let's add some objects in the vector */ AVLTree_GeeksforGeeks *avl = new AVLTree_GeeksforGeeks(); avl->Insert[2]; avl->Insert[5]; AVL->Insert[0]; unique_ptr<AVLTree_GeeksforGeeks> unique_p(avl); AVLArray[0] = move(unique_p); /* we do this for a number of other
2
Antworten
A. hpp: class A { private: std::unique_ptr<std::ifstream> file; public: A(std::string filename); }; A.cpp: A::A(std::string filename) { this->file(new std::ifstream(filename.c_str())); } Den Fehler, den ich bekomme, ist geworfen: A.cpp:7:43: error: no match for call to ‘(std::unique_ptr<std::basic_ifstream<char> >) (std::ifstream*)’ Hat
2
Antworten
Ich versuche, einen unique_ptr zu abgeleiteten Klasse in eine Funktion, der eine unique_ptr auf eine Basisklasse. So etwas wie: class Base {}; class Derived : public Base {}; void f(unique_ptr<Base> const &base) {} … unique_ptr<Derived> derived =
4
Antworten
Ich habe einige Objekte mit dem pimpl-idiom, bin mir aber nicht sicher, ob std::shared_ptr oder std::unique_ptr. Ich verstehe, dass std::unique_ptr effizienter ist, aber das ist nicht so sehr ein Problem für mich, da diese Objekte relativ Schwergewicht
5
Antworten
unique_ptr<T> nicht zulässt, kopieren Sie den Bau, sondern es unterstützt move-Semantik. Doch, kann ich zurückgeben unique_ptr<T> aus einer Funktion und weisen Sie den zurückgegebenen Wert einer Variablen. #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() {
4
Antworten
Mit dem neuen standard zu kommen (und Teile, die bereits in einigen Compilern), die neue Art std::unique_ptr soll ein Ersatz für std::auto_ptr. Ihre Verwendung genau überlappen (so kann ich eine Globale suchen/ersetzen auf mein code (nicht, dass
2
Antworten
Wie macht man Zugang unique_ptr Elemente eines Containers (per iterator) ohne Berücksichtigung der Eigentumsverhältnisse Weg von den container? Wenn man einen iterator auf ein element im container ist das element, das Eigentum immer noch mit dem container?
4
Antworten
Laut N3290 std::unique_ptr akzeptiert ein deleter argument im Konstruktor. Aber ich kann nicht, dass die Arbeit mit Visual C++ 10.0 oder MinGW g++ 4.4.1 in Windows, noch mit g++ 4.6.1 in Ubuntu. Ich daher Angst, dass mein
5
Antworten
Ich bin mit dem 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 }; Allerdings bekomme ich einen compile-Fehler in Bezug auf die Nutzung eines unvollständigen Typ, auf