Sign in to follow this  
Ceoddyn

VC++ Errors =^(

Recommended Posts

Ok, I'm trying to make a generic Menu class for helping with console output in my project I'm working on, and I've run into an error I can't get my head around. Here's the code:
//Menu.h
//Class: Menu
//Helper class for making menus.

class MenuOption;

class Menu
{
private:
	std::string m_Title;
	vector<MenuOption> m_Options;
	int m_OptionsAmount;
	char m_Input;

	//get input for the menu, called from displaymenu
	char GetInput();
public:
	//Create the menu with a given title or default string
	Menu(std::string Title="Default String");
	~Menu();
	//Add an option to the menu
	void AddOption(std::string name, char value);
	//Remove an option from the menu
	void RemoveOption(int key);

	//Set/Get the title of the menu
	void SetTitle(std::string title);
	std::string GetTitle();

	//Get the amount of options in the menu
	int GetAmount();

	//Display the menu
	void DisplayMenu();
};


The bad line apparently is:
	vector<MenuOption> m_Options;
which is giving me the following errors:
------ Build started: Project: colormenu, Configuration: Debug Win32 ------
Compiling...
Menu.cpp
c:\c++\tut\tut7\colormenu\Menu.h(11) : error C2143: syntax error : missing ';' before '<'
c:\c++\tut\tut7\colormenu\Menu.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\c++\tut\tut7\colormenu\Menu.h(11) : error C2238: unexpected token(s) preceding ';'

This is my first time working with vectors so I'm probably doing something wrong. Anyone got any ideas?

Share this post


Link to post
Share on other sites
In order for the compiler to deduce the correct template settings it needs the full definition of MenuOption. You only provided it the forward declaration. That's simply not enough for a template.

You can either

A) Include MenuOption.h

or

B) Change the menu class to work with MenuOption pointers instead (std::vector<MenuOption*>).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this