[英]unexpected not all control paths return a value?
我目前正在 C++ 中編寫一個程序,並創建了一個名為 parseText 的 function。 當我運行此 function 時,我收到警告“並非所有控制路徑都返回值”,但是在多次查看此代碼后,我無法找出發生這種情況的原因。 這是一個不正確的錯誤還是我錯過了什么。
int parseText(std::string line, std::string *posResponses) {
for (int x = 0; x < line.length(); x++) {
line.at(x) = toupper(line.at(x));
}
if (line == "HELP") {
runHelp(3);
return 0; //returns 0 if user entered invalid response and needs to repeat the code
}else if (line == "QUIT") {
return 2; //returns 2 if user wants to quit
}
if (posResponses->size() == 1 && posResponses[0] == line) {
return 1; //returns 1 if there was a valid response
}else if (posResponses[0] == "int") {
int x = posResponses[1].size();
for (int i = 0; i <= x; i++) {
if (posResponses[1].at(i) < 48 || posResponses[1].at(i) > 57) {
return 0; //returns 0 if user entered invalid response and needs to repeat the code
}
return 1; //returns 1 if there was a valid response
}
}
else{
int x = posResponses->size();
for (int i = 0; i <= x; i++) {
if (posResponses[i] == line) {
return 1; //returns 1 if there was a valid response
}
}
return 0; //returns 0 if user entered invalid response and needs to repeat the code
}
}
在這個if
分支
} else if (posResponses[0] == "int") {
int x = posResponses[1].size();
for (int i = 0; i <= x; i++) {
if (posResponses[1].at(i) < 48 || posResponses[1].at(i) > 57) {
return 0; //returns 0 if user entered invalid response and needs to repeat the code
}
return 1; //returns 1 if there was a valid response
}
}
如果x
被賦值< 0
,則根本不會進入for
循環,那么這個分支就沒有return
語句。
也許您確定x
在運行時不會為負數,但編譯器必須在編譯時確認所有分支的這一點。
我不確定你的意圖,你可能想要
} else if (posResponses[0] == "int") {
if (posResponses[1].size() == 0 || posResponses[1].at(0) < 48 || posResponses[1].at(0) > 57) {
return 0; //returns 0 if user entered invalid response and needs to repeat the code
}
return 1; //returns 1 if there was a valid response
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.