[英]C++. How to return null pointer instead of function return type?
我有一個檢查正則表達式並根據正則表達式結果返回std::vector<int>
的函數。 我需要檢查功能是否失敗/成功。 成功返回矢量對象時,失敗nullptr
以后再檢查if (somefunc() == nullptr) // do smth
返回類型std::vector<int>
值不能為nullptr
。
在這種情況下,最直接的方法是返回std::unique_ptr<std::vector<int>>
-在這種情況下,可以返回nullptr
。
其他選項:
optional<std::vector<int>>
作為返回類型(如果編譯器具有此C ++ 17功能,則使用boost::optional
或std::optional
) bool
參數,並將std::vector<int>&
作為函數的輸出參數 最好的方法實際上取決於用例。 例如,如果大小為0的結果向量等於'fail'-可以在代碼中隨意使用這種知識,只需檢查返回向量是否為空即可知道函數是成功還是失敗。
在我的實踐中,我幾乎總是堅持返回optional
(boost或std,取決於環境限制)。 這種接口是陳述“結果可以存在或不存在”這一事實的最清晰方法。
綜上所述-這不是唯一正確的解決方案。 上面列出了可能的選項-這僅取決於您的個人經驗和環境限制/競爭-選擇哪個選項。
您可以返回std::unique_ptr<std::vector<int>>
並檢查該值,或引發異常,或檢查vector.size() == 0
等。
有很多不同的選項:
返回一個std::vector<int>*
指針,可以選擇將其包裝在std::unique_ptr
以進行生命周期管理。 失敗時返回nullptr
。
通過參考參數傳遞std::vector
,然后返回bool
以表示成功/失敗。
失敗時拋出異常。
返回一個std::pair<std::vector<int>, bool>
,該對的second
字段表示成功/失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.