You get the error because you don't #include "Menu.h"
in MainMenu.h, so the TU being compiling has no idea what a "Menu" is. Give this
Some other notes:
Putting "using namespace std;" is best done at the tightest scope possible; a header file is the worst possible place to do this... please don't.
The designation "= 0" means the method is a "pure virtual," or abstract. You should generally not provide the bodies of these methods -- it is the responsibility of the subclass to implement them.
MainMenu is not implementing the Choice() method from Menu, it's declaring a new virtual method Choice(int).
Angle brackets are for HTML, square brackets are for non-HTML tags, like our source tags.