[英]C++ Creating a Menu and passing Args
所以我想基本上调用一个 void 并存储我的菜单、菜单编号、文本和函数(void),我确实犯了这个错误,但我无法弄清楚。
void AddMenu(char* text, int Menu, void* func)
{
nMenu[Menu] = Menu;
sMenu[Menu] = text;
fMenu[Menu]* func;
}
所以这个想法是
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);
有更好的方法吗?
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;
}
尝试更多类似的东西:
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);
话虽如此,请考虑更像这样的事情:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.