Tôi có một hàm cần trả về một con trỏ tới một đối tượng của lớp myClass
. Vì mục đích này, tôi đang sử dụng std::unique_ptr
.C++ std :: unique_ptr trở về từ hàm và kiểm tra cho null
Nếu hàm thành công, nó sẽ trả về một con trỏ tới một đối tượng có dữ liệu. Nếu không thành công, nó sẽ trả lại null
.
Đây là mã skelepton tôi:
std::unique_ptr<myClass> getData()
{
if (dataExists)
... create a new myClass object, populate and return it ...
// No data found
return std::unique_ptr<myClass> (null); <--- Possible ?
}
trên main
:
main()
{
std::unique_ptr<myClass> returnedData;
returnedData = getData();
if (returnedData != null) <-- How to test for null ?
{
cout << "No data returned." << endl;
return 0;
}
// Process data
}
Vì vậy, ở đây đi câu hỏi của tôi:
a) Là (trả lại một đối tượng hoặc null
) thể được thực hiện bằng cách sử dụng std::unique_ptr
?
b) Nếu có thể, cách triển khai?
c) Nếu không thể, lựa chọn thay thế là gì?
Cảm ơn bạn đã trợ giúp.
Tạo một con trỏ duy nhất là 'std :: unique_ptr myptr;' không cấp phát bất kỳ bộ nhớ nào, do đó bạn không cần phải xây dựng nó và vượt qua 'nullptr'. Vì vậy, bạn chỉ có thể tạo một và trả lại. –
AndyG
'nullptr' là từ khóa mới trong C++ 11 để hỗ trợ tốt hơn các con trỏ null. 'unique_ptr' có thể được xây dựng từ' nullptr', thậm chí ngầm. – dyp