問題描述
碰到以下開頭的內容,問題的解決方式
error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type]
問題來源
我解 leetcode 提交答案碰到的情況
解決方法
C++ 的單一 function 有出現沒有 return 值的狀況,
有時候「不一定是邏輯有誤,但會導致 compile 的錯誤」
實際上由於 C++ 的編譯器是十分嚴謹的,即使自己已經認為考慮了所有的情況,C++ 也會認為你可能有沒考慮到的內容,請把 default 內容都補齊。
範例
印象中我碰到問題類似以下的結構:
int foo(){
if(條件)
return 1;
else
return 0;
}
問題就出在 compiler 似乎認為這種狀況會存在沒有 return 的情形,
詳細原因未知 (我當下只有先紀錄解決方法,等未來再碰到再來研究原因)
解決範例
解決方法:我當下是多設定一個 return default 值就可以解決。
int foo(){
if(條件)
return 1;
else
return 0;
return 0; // for default
}