Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用switch语句访问函数OOP C++;_C++_Oop_Switch Statement - Fatal编程技术网

C++ 使用switch语句访问函数OOP C++;

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

我一直在尝试使用switch语句访问程序中的不同函数,当我编译代码时,无论输入什么,它都会显示默认选项。我是不是错过了一些很明显的东西

所有函数(所有空)都在类中声明。这可能是因为我正在实现此功能下面的其他“菜单”功能吗

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
      ;)的范围,它不太可能被修正。谢谢!修正了。谢谢!