简体   繁体   中英

C++ Function Pointer Syntax

I am trying to create a function in VC++ that takes a function pointer but I keep getting syntax errors.

The declaration in my header file looks like this:

 void ApplyFuncToCellsInSelection(void(*func)(CPoint, *CSpreadWnd));

Here is the definition:

void CSpreadWnd::ApplyFuncToCellsInSelection(void(*func)(CPoint, *CSpreadWnd)) { ... }

And here are the error messages I'm getting:

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 ';'

I know its probably something really simple that I'm missing but I can't seem to figure it out.

It's usually a good idea to define a typedef for your function pointer type. It helps using it in further declarations, and avoids having to change it twice when you write an error. Here, you put the asterisk on the wrong side of CSpreadWnd .

typedef void (*MyFuncPtr)(CPoint, CSpreadWnd*);
void ApplyFuncToCellsInSelection(MyFuncPtr func);

And definition:

void CSpreadWnd::ApplyFuncToCellsInSelection(MyFuncPtr func) { ... }

You have the asterisk on the wrong side of CSpreadWnd :

void ApplyFuncToCellsInSelection(void(*func)(CPoint, CSpreadWnd*));
                                 the asterisk needs to go here ^

The CSpreadWnd pointer looks funny. It looks like it should be CSpreadWnd* rather than *CSpreadWnd .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM