I plan to use this menu struct in an RPG played in the terminal. I want to make a RPG similar to D&D. I would like advice on my methods for the menu struct, especially the "hide" and "unhide" option methods.
main.cpp
#include <string>
#include <vector>
#include <cstdlib>
#include <iostream>
#include <initializer_list>
const int invalid_index = -2;
const int default_index = -1;
const std::string defualt_title = "";
const std::initializer_list<std::string> defualt_options = {""};
struct menu{
menu(const std::string& title, const std::initializer_list<std::string>& options)
: title(title), options(options), current_index(default_index){;};
menu(void)
: title(defualt_title), options(defualt_options), current_index(default_index){;};
std::vector<std::string> hidden_options;
std::vector<std::string> options;
std::string title;
int current_index;
void insert_option(int index, std::string option){
if(index >= 0 && index < options.size()){
options.insert(options.begin() + index, option);
}else{;}
};
void delete_option(int index){
if(index >= 0 && index < options.size()){
options.erase(options.begin() + index);
}else{;}
};
void obtain_option(int index){
if(index >= 0 && index < options.size()){
current_index = index;
}else{current_index = invalid_index;}
};
void hide_option(int index){
if(index >= 0 && index < options.size()){
hidden_options.resize(options.size());
hidden_options[index] = options[index];
options.erase(options.begin() + index);
}else{;}
};
void unhide_option(int index){
if(hidden_options[index] != ""){
if(index >= 0 && index < options.size()){
options.insert(options.begin() + index, hidden_options[index]);
}else{;}
}else{;}
};
friend std::ostream& operator<<(std::ostream& ostream, const menu& r){
ostream << r.title << '\n';
for(int i = 0; i < r.options.size(); i++){
ostream << "[" << i << "] " << r.options[i] << '\n';
}ostream << "Enter index: ";
return ostream;
};
};
int main(){
menu title_screen("Anyone Know a good RPG?", {"Play","Help","Quit"});
return 0;
}