So i want to basically call a void and store my menu, Menu Number, Text, and the function(void) im defiently doing this wrong however i can't figure it out.
void AddMenu(char* text, int Menu, void* func)
{
nMenu[Menu] = Menu;
sMenu[Menu] = text;
fMenu[Menu]* func;
}
So the idea would be
void AddMenu("Main Menu", 0, NULL);
void AddMenu("Option 1", 1, SomeVoid());
void AddMenu("Option 2", 2, NULL);
void AddMenu("Option 3", 3, NULL);
void AddMenu("Option 4", 4, NULL);
is there a better way of doing this?
int nMenu[32];
char* sMenu[32];
DWORD* fMenu[32];
int curMenu;
bool InMenu;
void AddMenu(char* text, int Menu, void* func)
{
nMenu[Menu] = Menu;
sMenu[Menu] = text;
fMenu[Menu]* func;
}
Try something more like this:
typedef void (*menuFunc)();
int nMenu[32];
const char* sMenu[32];
menuFunc fMenu[32];
void AddMenu(const char* text, int Menu, menuFunc func)
{
nMenu[Menu] = Menu;
sMenu[Menu] = text;
fMenu[Menu] = func;
}
void SomeVoid()
{
...
}
void AddMenu("Main Menu", 0, NULL);
void AddMenu("Option 1", 1, SomeVoid);
void AddMenu("Option 2", 2, NULL);
void AddMenu("Option 3", 3, NULL);
void AddMenu("Option 4", 4, NULL);
That being said, consider something more like this instead:
using menuFunc = std::function<void()>;
struct menuInfo
{
int id;
std::string text;
menuFunc func;
};
std::vector<menuInfo> fMenu;
void AddMenu(std:string text, int id, menuFunc func)
{
menuInfo mi;
mi.id = id;
mi.text = text;
mi.func = func;
fMenu.push_back(mi);
}
void SomeVoid()
{
...
}
void SomeVoid2()
{
...
}
void AddMenu("Main Menu", 0, nullptr);
void AddMenu("Option 1", 1, SomeVoid);
void AddMenu("Option 2", 2, [](){ SomeVoid2(); });
void AddMenu("Option 3", 3, nullptr);
void AddMenu("Option 4", 4, nullptr);