-
Jump to Case Label error
I am getting some new error that I don't understand
Code:
void MainMenu::process_option(int noption)const{
switch (noption){
case 1:
display_library(get_ptrLibrary());
break;
case 2: Menu *ptrEditMenu = new EditMenu(*get_ptrLibrary());
while((*ptrEditMenu).get_option()!=6){
(*ptrEditMenu).set_option(-1);
while (!((*ptrEditMenu).validate_option((*ptrEditMenu).get_option()))){
(*ptrEditMenu).display_menu();
(*ptrEditMenu).set_option((*ptrEditMenu).input_option());
}
(*ptrEditMenu).process_option((*ptrEditMenu).get_option());
}
delete ptrEditMenu;
break;
case 3:
case 4:
case 5:
case 6:
default:
break;
}
}p
ainmenu.cpp: In member function `virtual void MainMenu::process_option(int)
const':
mainmenu.cpp:61: jump to case label
mainmenu.cpp:48: crosses initialization of `Menu*ptrEditMenu'
mainmenu.cpp:62: jump to case label
mainmenu.cpp:48: crosses initialization of `Menu*ptrEditMenu'
mainmenu.cpp:63: jump to case label
mainmenu.cpp:48: crosses initialization of `Menu*ptrEditMenu'
mainmenu.cpp:64: jump to case label
mainmenu.cpp:48: crosses initialization of `Menu*ptrEditMenu'
mainmenu.cpp:65: jump to case label
mainmenu.cpp:48: crosses initialization of `Menu*ptrEditMenu'
-
Put your case statements in brackets, eg:
Code:
case 1:
{
//...
}
break;
-
Make it clearer! Replace the (*). syntax with the -> one and we'll be able to read more easily.
The error is explicit, it tells you that a switch or a goto statement can't cross an initialization, so put the Menu * initialization thing out of the structure.
-
Just a noob I kind of like the (*ptr).function notation but I took your suggestion and replaced all that with prt->function is this really easier to read? I guess you don't need the extra parenthasis so here's my changed code just to showoff lol.
Code:
Menu *ptrBaseMenu = new MainMenu(library);
while(ptrBaseMenu->get_option()!=6){
ptrBaseMenu->set_option(-1);
while (!(ptrBaseMenu->validate_option(ptrBaseMenu->get_option()))){
ptrBaseMenu->display_menu();
ptrBaseMenu->set_option(ptrBaseMenu->input_option());
}
ptrBaseMenu->process_option(ptrBaseMenu->get_option());
}