right away I see a need for a constructor.
eg
IO question ("A words", "B words" … … "A,B,C,D, or E", … etc);
I prefer
if (toupper(userinput) == "D")
the enum seems redundant. Make userinput a single char. OR if you want strings allow words input, string is ok, but if you want single char inputs, use a single char.
use that in your conditions (might be cleaner looking to use a switch statement)
it only allows A-E inputs. No numbers, etc. you can make it generic via a string class member and a list of what is allowed.
eg question.allowed = "1234";
and then if(allowed.find(userinput) … etc
then its a valid input
and even better the position from find tells you which action to do, so if they put in 3, do the 3rd action in this case … but nothing is stopping you from "NESW" to represent compass directions (do the 3rd action on 'S' which is still indicated from the find), or something else cool!
you need a way to define actions for what to do when it gets a choice. I am thinking virtual functions, but maybe someone else can help here; that is not an area I am expert in.