有一个函数指针结构:
typedef struct
{
int (*pfnVidInit)();
....
} UI_FUNCTIONS;
我需要创建并填充此结构的实例。在 C 中,我只是输入函数的名称:
static UI_FUNCTIONS gMenuFuncs = {
Menu_VideoInit,
...
};
现在我决定尝试用 C++ 重新制作我的菜单:
static UI_FUNCTIONS gMenuFuncs = {
Menu::getInstance()->VideoInit,
...
};
但编译器写道,它不能导致int (Menu::)()
Why int (*)()
is there (Menu::)
, and not (*)
, and how can I do it (*)
?
做这个:
不要忘记连接
functional
。我仍然不喜欢该代码,但它已尽可能接近您的版本。您可能需要将 lambda 包装在 中
std::function
,因为 在这种情况下,转换可能不起作用。在这种情况下,你应该这样写:PS 是的,可以保留一个函数指针,但我没有这样做,因为在其他条件相同的情况下
std::function
,在现代 C++ 中,with 的变体更通用和惯用。