phew, i haven't run it yet, but i got it to compile with zero errors

i just realized i had read the part on inheritance and polymorphism at http://members.tripod.com/~firstpod/cpp21/
but i had forgotten that you need to assign pointers to derived classes to the base class pointer, not the actual derived object and then it was telling me that the variables weren't initialized so i added the = new... stuff

Code:
int main()
{
	vector<MenuBase*> menu(3);
	
	MenuItem<int, int, char, int>* menuitem1 = new MenuItem<int, int, char, int>;
	menuitem1->SetInput(100);
	menu[0] = menuitem1;
	
	MenuItem<char, int, int, long>* menuitem2 = new MenuItem<char, int, int, long>;
	menuitem2->SetInput('A');
	menu[1] = menuitem2;
	
	MenuItem<bool, bool, int, char>* menuitem3 = new MenuItem<bool, bool, int, char>;
	menuitem3->SetInput(true);
	menu[2] = menuitem3;

	Menu theMenu(menu);

	cout << theMenu.GetSize() << endl;

	return 0;
}