代码之家  ›  专栏  ›  技术社区  ›  rob Victor Ramos

C++函数指针语法

  •  0
  • rob Victor Ramos  · 技术社区  · 16 年前

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

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

    我知道我可能错过了一些很简单的东西,但我似乎想不通。

    3 回复  |  直到 16 年前
        1
  •  9
  •   Didier Trosset    16 年前

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

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

    和定义:

    void CSpreadWnd::ApplyFuncToCellsInSelection(MyFuncPtr func) { ... }
    
        2
  •  6
  •   James McNellis    16 年前

    你把星号放错地方了 CSpreadWnd :

    void ApplyFuncToCellsInSelection(void(*func)(CPoint, CSpreadWnd*));
                                     the asterisk needs to go here ^
    
        3
  •  4
  •   cHao    16 年前

    CSpreadWnd指针看起来很有趣。看起来应该是这样的 CSpreadWnd* 而不是 *CSpreadWnd .