cast explicite requis pour type void **
Bonjour,
Je suis entrain d'écrire une fonction qui se charge de faire les allocation mémoire et surtout de les surveiller. Le prototype de cette fonction est :
Code:
void mon_malloc(void **Pointer, const size_t Size);
Globalement, cette fonction fait l'action suivante (après un certain nombre de controles)
Code:
1 2 3
| ...
*Pointer = ::malloc(Size)
... |
Par contre, j'ai une difficulté lors de l'appel à cette fonction
Code:
1 2 3
|
char *ptr = NULL;
mon_malloc(&ptr, 100); |
J'ai une erreur du compilateur
Code:
1 2 3
|
1>memory.cpp(15) : error C2664: 'mon_malloc'*: impossible de convertir le paramètre 1 de 'char * *__w64 ' en 'void **'
1> Les types pointés n'ont aucun rapport entre eux*; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction |
Lors de l'appel, il faut que je fasse un cast
Code:
mon_malloc((void **)&ptr, 100);
pour supprimer cette erreur. Même si je comprends bien le besoin, je me demande, s'il n'y aurait pas une subtilité d'écriture permettant de supprimer ce cast explicite (je ne souhaite pas non plus écrire une fonction surchargée pour chacun des types de pointeurs potentiels)
Merci pour vos réponses