Puntatori a Void

Nel modo C++, non puoi convertire implicitamente un puntatore a void (void *) in un puntatore di un altro tipo. Devi esplicitare l'operazione usando un operatore di cast.

Esempio:

int *p_int;
void *p_void;

p_void = p_int;           // Ok alla conversione implicita

p_int = p_void;           // Conversione implicita non permessa in C++ (in C sì)

p_int = (int *)p_void;    // Conversione esplicita -> OK
Questa regola ha un certo senso: un puntatore a void è fatto per puntare a qualsiasi cosa, perciò puoi metterci qualsiasi valore (indirizzo) senza troppe storie. Ma un puntatore ad int per esempio è usato di solito solo puntare ad un valore int, perciò non puoi direttamente farlo puntare a qualsiasi altro valore (che sarebbe visto come int, col risultato che l'intero ottenuto dipende dall'implementazione - la cosa è di rara utilità).


C++