C++ déréférencer un pointeur void , la conversion de int ptr à vide ptr

Ces lignes de code ci-dessous montrent d'erreur:

int e = 5, * ePtr = &e;
void * vPtr = ePtr; 
cout << *vPtr; 

erreur de syntaxe :

`void*' n'est pas un pointeur vers un objet de type

Je sais:

  1. tout type pointeur peut être stocké dans le vide de type pointeur sans cast explicite
  2. référence à la tentative d'annuler pointeur est une erreur de syntaxe

mais si nous ne pouvons pas faire le point n ° 2, qu'est-ce que l'utilisation du point # 1, à l'exception d'être syntaxiquement correct? Je veux imprimer 5 (c'est à dire e ici) à l'aide de vPtr..est-ce possible?

Cela fonctionne bien:

int e = 5, * ePtr = &e;
void * vPtr = ePtr; //specific to generic Ok!
double * dPtr = (double *)vPtr; //to let compiler know stoarge size
cout << *dPtr; //indirectly it is vPtr i.e. a void ptr, can be deref only if cast
void * est utilisé à peu près exclusivement pour stocker un pointeur de sorte que vous pouvez le jeter en arrière pour le genre et l'utiliser. Et il est beaucoup plus d'un C style de codage.
essayez d'utiliser casting void * vPtr = (void*)ePtr;
Vous êtes à la recherche pour les backticks: `void *vPtr = (void*)ePtr;`

OriginalL'auteur ShivaniDhanked | 2013-05-30