C ++函数指针语法

时间:2010-08-03 14:51:39

标签: c++ visual-c++ function-pointers

我正在尝试在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 ';'

我知道这可能是一件非常简单的事情,但我似乎无法解决这个问题。

3 个答案:

答案 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