C++函数指针语法

rob*_*rob 0 c++ function-pointers visual-c++

我试图在VC++中创建一个函数指针,但我不断收到语法错误.

我的头文件中的声明如下所示:

 void ApplyFuncToCellsInSelection(void(*func)(CPoint, *CSpreadWnd));
Run Code Online (Sandbox Code Playgroud)

这是定义:

void CSpreadWnd::ApplyFuncToCellsInSelection(void(*func)(CPoint, *CSpreadWnd)) { ... }
Run Code Online (Sandbox Code Playgroud)

以下是我收到的错误消息:

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 ';'
Run Code Online (Sandbox Code Playgroud)

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

Did*_*set 9

为函数指针类型定义typedef通常是个好主意.它有助于在进一步的声明中使用它,并避免在编写错误时必须更改它两次.在这里,你把星号放在了错误的一边CSpreadWnd.

typedef void (*MyFuncPtr)(CPoint, CSpreadWnd*);
void ApplyFuncToCellsInSelection(MyFuncPtr func);
Run Code Online (Sandbox Code Playgroud)

和定义:

void CSpreadWnd::ApplyFuncToCellsInSelection(MyFuncPtr func) { ... }
Run Code Online (Sandbox Code Playgroud)


Jam*_*lis 6

你的星号是错误的CSpreadWnd:

void ApplyFuncToCellsInSelection(void(*func)(CPoint, CSpreadWnd*));
                                 the asterisk needs to go here ^
Run Code Online (Sandbox Code Playgroud)