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
| class MenuElement {
public:
MenuElement(const std::string& name, std::function<void()> exec):
m_name(name), m_execute(std::move(exec))
{ }
void print() const { std::cout << m_name << std::endl; }
void execute() const { m_execute(); }
private:
std::function<void()> m_execute;
const std::string m_name;
};
class MenuPrin{
public:
void addNewElement(const std::string& name, std::function<void()> exec) {
m_allMenuElements.emplace_back(name, std::move(exec));
}
void print() const {
for(auto const & it : m_allMenuElements) {
it.print();
}
}
void execute(size_t toExecute) const {
m_allMenuElements[toExecute].execute();
}
private:
std::vector<MenuElement> m_allMenuElements;
}; |
Partager