C++ 使用switch语句访问函数OOP C++;
我一直在尝试使用switch语句访问程序中的不同函数,当我编译代码时,无论输入什么,它都会显示默认选项。我是不是错过了一些很明显的东西 所有函数(所有空)都在类中声明。这可能是因为我正在实现此功能下面的其他“菜单”功能吗C++ 使用switch语句访问函数OOP C++;,c++,oop,switch-statement,C++,Oop,Switch Statement,我一直在尝试使用switch语句访问程序中的不同函数,当我编译代码时,无论输入什么,它都会显示默认选项。我是不是错过了一些很明显的东西 所有函数(所有空)都在类中声明。这可能是因为我正在实现此功能下面的其他“菜单”功能吗 void bookshop::menu_searchtype() { std::cout << "Welcome to Hal's Book Emporium!\n\n"; std::cout << "You can search for a boo
void bookshop::menu_searchtype() {
std::cout << "Welcome to Hal's Book Emporium!\n\n";
std::cout << "You can search for a book by its:\n";
std::cout << "1. Identification number\n";
std::cout << "2. Title\n";
std::cout << "3. Author\n\n";
std::cout << "Which would you like to use?\n\n";
std::cin >> choice_menu;
int menu_searchtype_no;
switch (menu_searchtype_no) {
case '1':
menu_id();
break;
case '2':
menu_title();
break;
case '3':
menu_author();
break;
default:
std::cout << "We seemed to have run into a problem. Please try again\n\n";
break;
}
void bookshop::menu\u searchtype(){
std::cout您从未设置菜单搜索类型,因此它有一个未指定的值。在非常罕见的情况下,这可能“等于”'1'
、'2'
或'3'
(如果您使用ASCII,这分别是49
、50
或51
),但更有可能是某个看起来更高的随机值,它将触发默认值
情况
我猜你是想写:
switch (choice_menu) {
及
等等。您从未设置菜单搜索类型\u no
,因此它有一个未指定的值。在极少数情况下,这可能“等于”'1'
、'2'
或'3'
(如果您使用ASCII,则分别为49
、50
或51
),但更有可能是某个看起来更高的随机值,它将触发默认值
情况
我猜你是想写:
switch (choice_menu) {
及
等等
- 您正在将值读入选项菜单,而不是您甚至没有初始化的菜单搜索类型
- 您的case语句看起来像是在比较字符。请删除引号(如果您正在读取整数,并且choice_菜单是整数类型的),这样应该可以让您更进一步
- 您正在将值读入选项菜单,而不是您甚至没有初始化的菜单搜索类型
- 您的case语句看起来像是在比较字符。请删除引号(如果您正在读取整数,并且choice_菜单是整数类型的),这样应该可以让您更进一步
选择菜单的类型是什么?菜单搜索类型设置在哪里?当前菜单搜索类型未初始化,因此它将始终选择开关的默认大小写。@the_drow:那不完全正确。@LightnessRacesinOrbit为什么不?int menu_searchtype\u no;因此使用1而不是字符串“1”。@the_drow:为什么“始终选择开关的默认情况"?你让它听起来像一个未初始化的变量没有值,但那不是真的:它有一个未指定的值,很可能是49、50或51。只是考虑到
int
;)的范围,它不太可能有选择的类型是什么菜单?菜单的搜索类型在哪里?没有设置?目前菜单的搜索类型没有初始化,所以它会始终选择开关的默认大小写。@the_drow:那不太正确。@LightnessRacesinOrbit为什么不?int菜单\u searchtype\u no;所以使用1代替字符串“1”。@the_drow:为什么它“始终选择开关的默认大小写”?你让它听起来像一个未初始化的变量没有值,但那不是真的:它有一个未指定的值,很可能是49、50或51。只是考虑到int
;)的范围,它不太可能被修正。谢谢!修正了。谢谢!