明明有return语句却总提示函数需要返回值

cocoBai_ 2021-01-10 03:58:54
本人小白一枚,刚学会一些东西,想编一个小游戏自己玩玩,结果就在这里出了问题。求大神解决呜呜呜



#include <iostream>
#include <cstdlib>
using namespace std;
int menuForMethod(pet playerPet); //菜单函数,有返回值
int main(){......}
int menuForMethod(pet playerPet)
{
int num;
cout << star << star << endl;
cout << "************菜单选项************" << endl;
cout << star << star << endl;
cout << "1)打开商店系统" << endl;
cout << "2)前进以冒险!" << endl;
cout << "3)查看自己的宠物" << endl;
cout << star << star << endl;
cout << "************菜单选项************" << endl;
cout << star << star << endl;
cout << "选择:" << endl;
cin >> num;
while (cin.fail() || (num != 1 && num != 2 && num != 3)) { //检验输入
cin.clear();
cin.ignore();
cout << "输入错误,请重新输入" << endl;
cin >> num;
}
if (num == 1 || num == 2) {
return num;
}else {
Prt_playerPet(playerPet);
//在这里加了return也没用
}
//在这里加了return也没用
}



就是这个 menuForMethod 函数,编译器总是报错,说menuForMethod()需要返回值。可函数明明有return,而且我把可以加return的地方都加了,也没用。
求大神解,急!!
...全文
709 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocoBai_ 2021-02-06
  • 打赏
  • 举报
回复
谢谢各位,我已经弄清楚原因了!
cocoBai_ 2021-01-17
  • 打赏
  • 举报
回复
好,我试试先
cocoBai_ 2021-01-12
  • 打赏
  • 举报
回复
Visual Studio 2019,不小心打错了……
cocoBai_ 2021-01-12
  • 打赏
  • 举报
回复
嗯嗯,准确来说不是报错,而是警告。但是是那种导致无法完成编译的警告。用的Visual Stduio 2019
芒果黑 2021-01-12
  • 打赏
  • 举报
回复
用的啥编译器 缺少某个情况下的返回值一般只报警告 报错那应该是完全没有返回值
qzjhjxj 2021-01-12
  • 打赏
  • 举报
回复
引用 7 楼 cocoBai_ 的回复:
嗯嗯,准确来说不是报错,而是警告。但是是那种导致无法完成编译的警告。用的Visual Stduio 2019
是否考虑下,先把int num = 0;设为全局变量,先让它编译通过,再看看问题出在哪。
cocoBai_ 2021-01-11
  • 打赏
  • 举报
回复
谢谢三楼大大的提醒
cocoBai_ 2021-01-11
  • 打赏
  • 举报
回复
一楼大大,菜单函数如果改成void类型,就达不到我本来设计的需要返回选择值的目的了。你看有没有更好的方法,谢谢了。
楚无香 2021-01-11
  • 打赏
  • 举报
回复
变量声明最好给一个初始值,如,int num = 0; 可注释掉Prt_playerPet(playerPet)这个函数编译,如不再报错,则排查函数中是否有死循环
  • 打赏
  • 举报
回复
去掉那些你没有公布处理的类型,变量后,是没有问题的,需要自己分析一下,报错信息。

#include <iostream>
#include <cstdlib>
using namespace std;
int menuForMethod(/*pet playerPet*/);                //菜单函数,有返回值
int main() { return 0; }
int menuForMethod(/*pet playerPet*/)
{
	int num;
	//cout << star << star << endl;
	cout << "************菜单选项************" << endl;
//	cout << star << star << endl;
	cout << "1)打开商店系统" << endl;
	cout << "2)前进以冒险!" << endl;
	cout << "3)查看自己的宠物" << endl;
//	cout << star << star << endl;
	cout << "************菜单选项************" << endl;
//	cout << star << star << endl;
	cout << "选择:" << endl;
	cin >> num;
	while (cin.fail() || (num != 1 && num != 2 && num != 3)) {    //检验输入
		cin.clear();
		cin.ignore();
		cout << "输入错误,请重新输入" << endl;
		cin >> num;
	}
	if (num == 1 || num == 2) {
		return num;
	}
	else {
		//Prt_playerPet(playerPet);
		//在这里加了return也没用
	}
	//在这里加了return也没用
}
qzjhjxj 2021-01-10
  • 打赏
  • 举报
回复
把菜单函数改为void 型,不是int 型。

65,183

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧