[英]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.