2009-10-13 44 views
5

No puedo entender la sintaxis para declarar un puntero de función como un miembro estático.Puntero de función C++ como miembro estático

#include <iostream> 
using namespace std; 

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

void A::*cb = NULL; 

int main() 
{ 
} 

g ++ muestra el error "no se puede declarar el puntero al miembro 'void'". Supongo que tengo que hacer algo con paréntesis pero nulo A :: (* cb) = NULL tampoco funciona.

Respuesta

27

me introdujo un typedef, lo que hizo algo más claro en mi opinión:

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

    static FPTR cb; 
}; 

A::FPTR A::cb = NULL; 
+0

'algo', declara modestamente! – xtofl

+0

¡Bueno, lo intento! :) –

+2

+1 para punteros de función de deflectores de tipos. (personas que no deben ser tiradas, en mi humilde opinión;) – Macke

10
void (*A::cb)(int a, char c) = NULL; 
+0

Eso es algo diferente: Es un puntero a función miembro. –

+0

jeje ... funciona en mi máquina;) – Goz

+0

Lo arreglé de todos modos. – Goz

Cuestiones relacionadas