Io adotterei un approccio diverso basato su oggetti funzione.
Ovviamente prima dovrai settare i parametri delle varie classi.codice:struct MenuItem { virtual void execute()=0; }; struct MenuItemA : public MenuItem { Type1 param1; Type2 param2; void execute() { // qualcosa con param1 e param2 } }; struct MenuItemB : public MenuItem { Type1 param1; Type2 param2; Type1 param3; Type1 param4; void execute() { // qualcosa con param1, param2, param3, param4 } }; vector<MenutItem*> menuList; menuList.push_back(new MenuItemA); menuList.push_back(new MenuItemB); for(int i=0;i<menuList.size();i++) { menuList[i]->execute(); }