1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| class Menu{
public:
Menu(){
options_.insert(std::make_pair(options_.size()+1,MenuItem("option1")));
options_.insert(std::make_pair(options_.size()+1,MenuItem("option2")));
options_.insert(std::make_pair(options_.size()+1,MenuItem("option3")));
options_.insert(std::make_pair(options_.size()+1,MenuItem("option4")));
options_.insert(std::make_pair(options_.size()+1,MenuItem("quitter")));
}
void connect(size_t optNumber,std::function<void()> & fun){
auto it = options_.find(optNumber);
if(it == options_.end()){
std::cout<<"option doesn't exists, abording"<<std::endl;
return ;
}
it->second.callee.swap(fun);
}
bool run(){
for(auto & it : options_){
std::cout<<it.first<<" "<<it.second.description<<std::endl;
}
std::cout<<std::endl<<"Votre choix ?";
size_t choice;
std::cin>>choice;
if(choice < options_.size()){
auto it = options_.find(choice);
it->second.callee();
return true;
}
std::cout<<"good bye, see you soon"<<std::endl;
return false;
}
private:
std::map<size_t, MenuItem> options_;
}; |
Partager