我正在尝试在VC ++中创建一个带有函数指针的函数但我不断收到语法错误。
我的头文件中的声明如下所示:
void ApplyFuncToCellsInSelection(void(*func)(CPoint, *CSpreadWnd));
这是定义:
void CSpreadWnd::ApplyFuncToCellsInSelection(void(*func)(CPoint, *CSpreadWnd)) { ... }
以下是我收到的错误消息:
c:\...\spreadwnd.h(274) : error C2059: syntax error : 'function-style cast'
c:\...\spreadwnd.h(274) : error C2059: syntax error : ')'
c:\...\spreadwnd.h(274) : error C2143: syntax error : missing ')' before ';'
我知道这可能是一件非常简单的事情,但我似乎无法解决这个问题。
答案 0 :(得分:9)
为函数指针类型定义typedef通常是个好主意。它有助于在进一步的声明中使用它,并避免在编写错误时必须更改它两次。在这里,您将星号放在CSpreadWnd
的错误一侧。
typedef void (*MyFuncPtr)(CPoint, CSpreadWnd*);
void ApplyFuncToCellsInSelection(MyFuncPtr func);
定义:
void CSpreadWnd::ApplyFuncToCellsInSelection(MyFuncPtr func) { ... }
答案 1 :(得分:6)
你的星号位于CSpreadWnd
的错误一边:
void ApplyFuncToCellsInSelection(void(*func)(CPoint, CSpreadWnd*));
the asterisk needs to go here ^
答案 2 :(得分:4)
CSpreadWnd指针看起来很有趣。它看起来应该是CSpreadWnd*
而不是*CSpreadWnd
。