Invalid conversion from‘const void*&

Résolu/Fermé
Utilisateur anonyme - 10 juil. 2008 à 01:10
 Utilisateur anonyme - 10 juil. 2008 à 13:23
Bonjour,
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:

2 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
10 juil. 2008 à 04:51
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.
1
Utilisateur anonyme
10 juil. 2008 à 13:23
Merci beaucoup
je vais utiliser un char alors
0