Menu class/struct for RPG I plan to use this menu struct in an RPG played in the terminal.  I want to make a RPG similar to D&amp;D. I would like advice on my methods for the menu struct, especially the "hide" and "unhide" option methods.

main.cpp

#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;initializer_list&gt;

const int invalid_index = -2;
const int default_index = -1;
const std::string defualt_title = "";
const std::initializer_list&lt;std::string&gt; defualt_options = {""};

struct menu{
    menu(const std::string&amp; title, const std::initializer_list&lt;std::string&gt;&amp; options)
        : title(title), options(options), current_index(default_index){;}; 
    menu(void)
        : title(defualt_title), options(defualt_options), current_index(default_index){;};

    std::vector&lt;std::string&gt; hidden_options;
    std::vector&lt;std::string&gt; options;
    std::string title;
    int current_index;

    void insert_option(int index, std::string option){
        if(index &gt;= 0 &amp;&amp; index &lt; options.size()){       
            options.insert(options.begin() + index, option);
        }else{;}
    };

    void delete_option(int index){
        if(index &gt;= 0 &amp;&amp; index &lt; options.size()){       
            options.erase(options.begin() + index);
        }else{;}
    };

    void obtain_option(int index){
        if(index &gt;= 0 &amp;&amp; index &lt; options.size()){
            current_index = index;  
        }else{current_index = invalid_index;}
    };

    void hide_option(int index){
        if(index &gt;= 0 &amp;&amp; index &lt; 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 &gt;= 0 &amp;&amp; index &lt; options.size()){       
                options.insert(options.begin() + index, hidden_options[index]);
            }else{;}
        }else{;}
    };

    friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp; ostream, const menu&amp; r){
        ostream &lt;&lt; r.title &lt;&lt; '\n';
        for(int i = 0; i &lt; r.options.size(); i++){
            ostream &lt;&lt; "[" &lt;&lt; i &lt;&lt; "] " &lt;&lt; r.options[i] &lt;&lt; '\n';
        }ostream &lt;&lt; "Enter index: ";
        return ostream; 
    };  
};

int main(){
    menu title_screen("Anyone Know a good RPG?", {"Play","Help","Quit"});
    return 0;   
}
defualt_title and defualt_options are misspelled.
Those empty else{;} statements are unnecessary.  If there is eventually a need for actual else statements, then they can be added later.
With those "stray" data members, this should really be a class so that they can be private.  Data members should not be directly exposed to the interface.  Any functions that shouldn't be called by the user should also be private, otherwise they should be public.