Chodzi o utworzenie kopii unique_ptr
Strzelam, że się przejęzyczyłeś i chciałeś napisać
Chodzi o utworzenie nowego unique_ptr
, który będzie trzymał kopie tego, na co wskazuje unique_ptr
, 'którego kopiujemy'.
Jeżeli tak, no to musisz dokładnie to zrobić. Skopiować to na co wskazuje unique_ptr
i wrzucić to do nowego unique_ptr
.
Zoba na to:
struct Node {
std::vector<std::unique_ptr<Node>> UniqueVector;
Node() = default;
Node(Node&&) = default;
Node& operator=(Node&&) = default;
Node(const Node& other)
{
*this = other;
}
Node& operator=(const Node& other)
{
std::transform(other.UniqueVector.begin(), other.UniqueVector.end(),
std::back_inserter(UniqueVector),
[](const auto& node_ptr)
{
return std::make_unique<Node>(*node_ptr);
});
return *this;
}
};
W operatorze przypisania lecisz po wszystkich ptr, i robisz nowe ptr, z kopią tego na co wskazywały te, z których kopiujemy.
Tu MVCE (dla uproszczenia wypisywania, Node trzyma ptr na inty):
https://wandbox.org/permlink/3DPrfVenpZs8U6JK