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 回答