我有一个函数需要返回一个指向class对象的指针myClass
。为此,我正在使用std::unique_ptr
。
如果函数成功,它将返回一个指向带有数据的对象的指针。如果失败,则应返回null
。
这是我的代码框架:
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?
}
在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
}
所以这是我的问题:
a)是否可以(使用返回对象null
)std::unique_ptr
?
b)如果可能,如何实施?
c)如果不可能,还有什么替代方法?
感谢您的帮助。
以下任何一种都可以工作:
return std::unique_ptr<myClass>{};
return std::unique_ptr<myClass>(nullptr);
要测试返回的对象是否指向有效对象,只需使用:
if ( returnedData )
{
// ...
}
请参阅http://en.cppreference.com/w/cpp/memory/unique_ptr/operator_bool。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句