我有一個函數,根據regex結果檢查正則表達式並返回std::vector<int>
。我需要檢查功能是否失敗/成功。成功時返回矢量對象,失敗nullptr
以後再查if (somefunc() == nullptr) // do smth
C++。如何返回空指針而不是函數返回類型?
1
A
回答
11
返回值的類型std::vector<int>
不能是nullptr
。
在這種情況下,最直接的方法是返回std::unique_ptr<std::vector<int>>
而不是 - 在這種情況下可以返回nullptr
。
其他選項:
- 投的情況下,異常失敗
- 使用
optional<std::vector<int>>
作爲返回類型(boost::optional
或std::optional
如果你的編譯器有這個C++ 17功能) - 回報
bool
參數並具有std::vector<int>&
作爲功能的輸出參數
最好的方法去真正去依賴於用例。 例如,如果大小0的結果向量等於'失敗' - 請隨意在代碼中使用這種知識,並檢查返回向量是否爲空以知道函數是失敗還是成功。
在我的練習中,我幾乎總是堅持返回optional
(boost或std,取決於環境限制)。 這樣的界面是陳述「結果可以存在與否」的最明確的方式。
總結 - 這不是一個唯一正確的解決方案的問題。 上面列出了可能的選項 - 這只是您個人經驗和環境限制/召集的問題 - 可以選擇哪個選項。
1
0
有許多不同的選擇:
回報
std::vector<int>*
指針,可選包在std::unique_ptr
終身管理。失敗時返回nullptr
。通過
std::vector
通過參考參數,然後返回bool
成功/失敗。在失敗時拋出異常。
返回一個
std::pair<std::vector<int>, bool>
,其中對的second
字段表示成功/失敗。
相關問題
- 1. C++函數指針的返回類型
- 2. 返回一個空當返回類型不是指針
- 3. 函數返回指針C
- 4. 函數返回指針C
- 5. 返回類型的lambda函數指針
- 6. 函數返回類型和指針
- 7. C++ const成員函數返回一個const指針..但是返回的指針是什麼類型的const?
- 8. C++:返回子類指針
- 9. C++:如何從函數返回指針指向指針?
- 10. 返回void的C++/C函數指針*
- 11. 返回範圍如果類型是指針,函數的值
- 12. 函數返回指針爲空?
- 13. 函數返回類型爲指針,爲什麼不是如int,而返回變量
- 14. 如何返回函數中的空指針C++
- 15. 函數不指示返回類型 - Scala
- 16. 函數指針返回
- 17. 從函數返回指針
- 18. 從函數返回指針
- 19. 函數返回指針
- 20. 函數指針返回不同的類類型
- 21. 返回指針C
- 22. C++返回指針
- 23. 返回類指針
- 24. 字符返回函數指針C++
- 25. C++從函數返回指針
- 26. 由C函數返回指針陣列
- 27. 函數返回指針:在C++中
- 28. 指針calloc函數是否返回指針向量? (C語言)
- 29. 構造函數返回我無類型而不是類類型
- 30. 通過函數返回類指針
「失敗」是什麼意思?你不能只返回一個空矢量?你甚至需要使用「null」?或者你不能只在你的函數調用中添加一個「狀態」變量?或者讓函數返回一個狀態,並通過引用傳遞向量? – paulsm4