[英]C++ Function Pointer Syntax
我试图在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 ';'
我知道我可能很简单,但是我似乎无法弄清楚。
为函数指针类型定义typedef通常是一个好主意。 它有助于在进一步的声明中使用它,并避免在编写错误时必须对其进行两次更改。 在这里,您将星号放在CSpreadWnd
的错误一侧。
typedef void (*MyFuncPtr)(CPoint, CSpreadWnd*);
void ApplyFuncToCellsInSelection(MyFuncPtr func);
和定义:
void CSpreadWnd::ApplyFuncToCellsInSelection(MyFuncPtr func) { ... }
您在CSpreadWnd
错误的一面有星号:
void ApplyFuncToCellsInSelection(void(*func)(CPoint, CSpreadWnd*));
the asterisk needs to go here ^
CSpreadWnd指针看起来很有趣。 看起来应该是CSpreadWnd*
而不是*CSpreadWnd
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.