This schema isn't all that I imagined. I have started my second Menu an edit menu which is also derived from Menu similar to MainMenu and must create EditMenu within the process_option() function of MainMenu. Ending edit I just return to MainMenu. The code is redundant the way I handle editmain.
In main I have:
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());
}
in mainmenu.cpp my definitions for MainMenu I have:
Code:
void MainMenu::process_option(int noption)const{
switch (noption){
case 1:
display_library(get_ptrLibrary());
break;
case 2: Menu *ptrEditMenu = new EditMenu(getptrLibrary());
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;
}
}