8

関数ポインタを静的メンバーとして宣言するための構文を理解できません。

#include <iostream>
using namespace std;

class A
{
    static void (*cb)(int a, char c);
};

void A::*cb = NULL;

int main()
{
}

g++は「`void'メンバーへのポインタを宣言できません」というエラーを出力します。かっこを使って何かをする必要があると思いますが、void A ::(* cb)=NULLも機能しません。

4

2 に答える 2

30

私はtypedefを導入しました。これにより、私の意見ではそれがいくらか明確になりました。

class A
{
  typedef void (*FPTR)(int a, char c);

  static FPTR cb;
};

A::FPTR A::cb = NULL;
于 2009-10-13T13:17:30.967 に答える
12
void (*A::cb)(int a, char c) = NULL;
于 2009-10-13T13:15:27.380 に答える