Wie die Zuweisung einer Adresse zu einem bestehenden Objekt zu einem smart-pointer?

#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 std::unique_ptr. Ich habe bereits versucht:

pointer = std::make_unique<bar>(object)

Aber es wirft viele Fehler während der Kompilierung. Wie kann ich das tun?

Update
Wie gesagt, in den Antworten - mithilfe der std::unique_ptr::reset Methode führte zu undefiniertem Verhalten. Jetzt weiß ich, dass in solchen Fällen sollte ich verwenden, ein standard-Zeiger.

InformationsquelleAutor der Frage Tomasz Kasperczyk | 2015-02-13

Schreibe einen Kommentar