Mam proste pytanie noob, że nie mogę znaleźć odpowiedzi na:Konwersja obiektu std :: unique_ptr
W C++ jak można przekonwertować zwykłego obiektu
int i;
do std::unique_ptr
?
std::unique_ptr<int> iptr = &i; //invalid
std::unique_ptr<int> iptr = static_cast<std::unique_ptr<int>>(&i); //invalid
Dzięki.
Chociaż dla kompletności funkcja byłaby przyjemna, ale nie sądzę, że została pominięta tak bardzo, jak nie jest potrzebna. Pamiętaj, że make_shared rozwiązuje problem przydzielania dwóch obiektów naraz (nie ma równoważnego konstruktora), podczas gdy unique_ptr po prostu tego nie potrzebuje (ma zero na podstawie projektu). –
To nie prawda. Nadal istnieje wyjątek, który nie jest bezpieczny, jeśli skonstruujesz dwa unique_ptrs w jednym wywołaniu funkcji, które na przykład make_unique zapisuje. – Puppy
Nie można tego uniknąć, tworząc w tym miejscu unique_ptr? 'func (unique_ptr (new T), unique_ptr (new U))' –