2009-10-13 31 views
5

Non riesco a capire la sintassi per dichiarare un puntatore a funzione come membro statico.Puntatore di funzione C++ come membro statico

#include <iostream> 
using namespace std; 

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

void A::*cb = NULL; 

int main() 
{ 
} 

g ++ restituisce l'errore "Impossibile dichiarare il puntatore al membro` void '". Presumo che ho bisogno di fare qualcosa con parentesi ma void A :: (* cb) = NULL non funziona neanche.

risposta

27

ho introdotto un typedef, che ha reso un po 'più chiaro, a mio parere:

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

    static FPTR cb; 
}; 

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

"un po '", dichiara con modestia! – xtofl

+0

Beh, ci provo! :) –

+2

+1 per i puntatori di funzione typedeffing. (ppl che non dovrebbe essere sparato, IMHO;) – Macke

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

Questo è qualcosa di diverso: è un puntatore a funzione membro. –

+0

hehe ... funziona sulla mia macchina;) – Goz

+0

L'ho risolto comunque. – Goz

Problemi correlati