Bietet die C ++ 11-Standardbibliothek ein Dienstprogramm zum Konvertieren von a std::shared_ptrnach std::unique_ptroder umgekehrt? Ist das ein sicherer Betrieb?
Was ist die beste Methode, um shared_ptreinen abgeleiteten Typ an eine Funktion zu übergeben, die shared_ptreinen Basistyp verwendet? Ich übergebe im Allgemeinen shared_ptrs als Referenz, um eine unnötige Kopie zu vermeiden: int foo(const shared_ptr<bar>& ptr); aber das funktioniert nicht, wenn ich versuche, so etwas zu tun int foo(const shared_ptr<Base>& ptr); …
Wenn ich ein Objekt deklariere, das in einen gemeinsamen Zeiger eingeschlossen ist: std::shared_ptr<myClass> myClassObject(new myClass()); dann wollte ich es als Argument an eine Methode übergeben: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr<myClass> arg1) { arg1->someField = 4; } Erhöht das oben Gesagte einfach die Referenzanzahl von shared_pt und alles ist cool? …
Hallo, ich habe heute eine Frage zum Einfügen verschiedener Objekttypen in dasselbe Vektorarray gestellt. Mein Code in dieser Frage war gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate and ORgate classes class gate { ..... ...... virtual void Run() { …
Auf der Seite cplusplus.comshared_ptr wird zwischen einer leeren std::shared_ptr und einer Null unterschieden shared_ptr . Die Seite cppreference.com ruft die Unterscheidung nicht explizit auf, sondern verwendet nullptrin ihrer Beschreibung des std::shared_ptrVerhaltens sowohl "leer" als auch Vergleich mit . Gibt es einen Unterschied zwischen einer leeren und einer Null shared_ptr? Gibt …
Ich lese Scott Meyers "Effective C ++" Buch. Es wurde erwähnt, dass es eingebaute Zeiger gibt tr1::shared_ptrund tr1::weak_ptrsich wie diese verhält, aber sie verfolgen, wie viele tr1::shared_ptrsauf ein Objekt zeigen. Dies wird als Referenzzählung bezeichnet. Dies funktioniert gut, um Ressourcenlecks in azyklischen Datenstrukturen zu verhindern. Wenn jedoch zwei oder mehr …
Was ist das Äquivalent von a static_castmit boost::shared_ptr? Mit anderen Worten, wie muss ich Folgendes umschreiben? Base* b = new Derived(); Derived* d = static_cast<Derived*>(b); bei der Verwendung shared_ptr? boost::shared_ptr<Base> b(new Derived()); boost::shared_ptr<Derived> d = ???
Angenommen, ich habe eine shared_ptrmit einem benutzerdefinierten Allokator und einem benutzerdefinierten Löscher. Ich kann im Standard nichts finden, das darüber spricht, wo der Deleter gespeichert werden soll: Es heißt nicht, dass der benutzerdefinierte Allokator für den Speicher des Deleters verwendet wird, und es heißt nicht, dass dies nicht der Fall …
Der folgende Code erzeugt eine Warnung, wenn er mit Thread Sanitizer unter macOS ausgeführt wird. Ich kann nicht sehen, wo das Rennen ist. Der Steuerblock von shared_ptr und schwach_ptr ist threadsicher, und das Drücken und Herausspringen von wird durch Halten std::queueeiner Sperre erfolgen. #include <future> #include <memory> #include <queue> class …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.