簡體   English   中英

C ++函數指針語法

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM