Invalid conversion from‘const void*&
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Voila j 'ai cette erreur en c++
voici le code :
Vous avez une idée ??
Voila j 'ai cette erreur en c++
error: invalid conversion from ‘const void*’ to ‘void*’ error: initializing argument 2 of ‘ssize_t recv(int, void*, size_t, int)’
voici le code :
string buffer_pass = ""; recv_pass = recv(s_accept, buffer_pass.c_str(), buffer_pass.size(),0);
Vous avez une idée ??
A voir également:
- Invalid conversion from‘const void*&
- Logiciel gratuit conversion calendrier républicain - Télécharger - Études & Formations
- Win setup from usb - Télécharger - Utilitaires
- Invalid bios image ✓ - Forum BIOS
- No available networks no response from server iron tv pro - Forum TV & Vidéo
- Apply update from adb traduction ✓ - Forum Téléphones & tablettes Android
2 réponses
Salut,
Oui tu ne devrais pas utiliser un string mais plutôt un tableau de char.
Je sais bien qu'on est en C++ et pas en C mais ici tu n'as pas le choix.
En fait c'est simple: la classe string encapsule un char *
Et justement étant donné que l'on parle d'encapsulation, il faut que la classe string, avec sa méthode c_str(), s'assure que la chaine retournée ne sera pas modifiée car tu es sensé utilisé les méthodes de string pour faire ça. Donc il faut que tu aies uniquement un accés en lecture seule à cette chaine. C'est pourquoi la méthode retourne un const char *, qui sera donc converti en const void * à la volée dans le passage à recv. Or recv attend un void *, c'est à dire un buffer qu'il est sûr de pouvoir modifier, ce qui n'est pas le cas ici.
Tu dois donc prendre un tableau de char, alloué dynamiquement ou pas c'est toi qui décide.
Oui tu ne devrais pas utiliser un string mais plutôt un tableau de char.
Je sais bien qu'on est en C++ et pas en C mais ici tu n'as pas le choix.
En fait c'est simple: la classe string encapsule un char *
Et justement étant donné que l'on parle d'encapsulation, il faut que la classe string, avec sa méthode c_str(), s'assure que la chaine retournée ne sera pas modifiée car tu es sensé utilisé les méthodes de string pour faire ça. Donc il faut que tu aies uniquement un accés en lecture seule à cette chaine. C'est pourquoi la méthode retourne un const char *, qui sera donc converti en const void * à la volée dans le passage à recv. Or recv attend un void *, c'est à dire un buffer qu'il est sûr de pouvoir modifier, ce qui n'est pas le cas ici.
Tu dois donc prendre un tableau de char, alloué dynamiquement ou pas c'est toi qui décide.