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

时间:2015-01-04 15:58:39

标签: 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 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;
}

}

2 个答案:

答案 0 :(得分:3)

  • 您正在将值读入choice_menu而不是您甚至没有初始化的menu_searchtype_no。
  • 您的案例陈述看起来像是在比较字符。删除引号(如果您正在读取整数并且choice_menu是整数类型)并且应该让您进一步移动。

答案 1 :(得分:1)

您从未设置menu_searchtype_no,因此它具有未指定的值。在非常罕见的情况下,这可能会“平等”'1''2''3'(分别为495051 '使用ASCII),但更有可能是一些随机看起来较高的值会触发default的情况。

我猜你打算写:

switch (choice_menu) {

case 1: