Tôi đã có một câu hỏi noob đơn giản rằng tôi không thể tìm thấy câu trả lời cho:Chuyển đổi đối tượng để std :: unique_ptr
Trong C++ làm thế nào để bạn chuyển đổi một đối tượng thường xuyên
int i;
thành một std::unique_ptr
?
std::unique_ptr<int> iptr = &i; //invalid
std::unique_ptr<int> iptr = static_cast<std::unique_ptr<int>>(&i); //invalid
Cảm ơn.
Mặc dù cho đầy đủ chức năng sẽ được tốt đẹp, nhưng tôi không nghĩ rằng nó đã bị bỏ qua rất nhiều là không cần thiết. Hãy nhớ rằng make_shared giải quyết vấn đề phân bổ hai đối tượng cùng một lúc (không có hàm tạo tương đương), trong khi unique_ptr chỉ đơn giản là không cần điều này (nó có không có chi phí bằng thiết kế). –
Điều đó không đúng. Vẫn có một trường hợp ngoại lệ không an toàn nếu bạn xây dựng hai unique_ptrs trong một cuộc gọi hàm, ví dụ, make_unique tiết kiệm. – Puppy
Bạn không thể tránh điều đó bằng cách tạo unique_ptr trực tiếp tại điểm đó? 'func (unique_ptr (T mới), unique_ptr (new U))' –