c++ - 控制到达非空函数的结尾 [-Wreturn-type]
问题描述
我写了一个代码片段,这样:
int gnrt(vector <int> vect, int n)
{
std::vector <int> :: iterator it;
it = find(vect.begin(), vect.end(), n);
if(it!=vect.end()) gnrt(vect, n+1);
else return n;
}
我试图找到一个与向量内的任何元素都不相似的数字 n 。但它一直显示警告:
In function 'int gnrt(std::vector<int>, int)':
warning: control reaches end of non-void function [-Wreturn-type]
任何人都请解释这里发生了什么。
解决方案
问题在这里:
if(it!=vect.end()) gnrt(vect, n+1);
else return n;
您的 if 案例没有返回值。
你可能想要这样做:
if (it!=vect.end())
return gnrt(vect, n+1);
else
return n;
我不知道您使用的是什么编译器,但通常会显示生成错误或警告的行以帮助您找到问题。
推荐阅读
- c++ - 为什么 std::next 在以空地图开头时卡住
- arrays - 用自定义字符串填充谷歌表格数组
- linux - 密码作为 sshpass 命令的输入
- c# - 水晶报表水晶决定未发现问题
- vim - coc.nvim 用 1 次 esc 键离开插入编译模式?
- google-cloud-functions - Angularfire 6为所有功能设置默认云功能区域(位置)
- php - PHP SimpleXML for循环使用Leaflet map在XML中具有相同名称的每个元素
- reactjs - 错误 (ECONNRESET) 将请求发布到快速服务器。反应快递应用
- javascript - Vscode 代码空间未突出显示我的 JavaScript/React/TypeScript 文件
- vb.net - 错误:只要之前创建的条目仍处于打开状态,您就无法创建条目