Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 2011
-
11 déc. 2005 à 11:33
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011
-
11 déc. 2005 à 21:12
Bonjour à tous....
Avant d'acheter un flingue pour de bon, je me suis dit qu'il pourrait etre judicieux de demander de l'aide quelque part... voila, je vais vous exposer le problême. Voici tout d'abord le fragment de code correspondant :
/* Constructeur qui marche bien :) */
String::String(char* chaine) {
sz = new char[lstrlen(chaine) + 1];
lstrcpy(sz, chaine);
}
char* chaine = new char[lstrlen(szBuffer) + 1];
lstrcpy(chaine, szBuffer);
delete szBuffer;
szBuffer = new char[uSize];
lstrcpy(szBuffer, chaine);
delete chaine;
}
>Voila, donc j'explique maintenant le souci...alors quand j'instancie mon objet de type String avec un char* (fonction 1), et que je l'affiche genre avec cout, tout marche nikel..mais quand je déclare d'abord la variable à blanc (j'ai un constructeur aussi pour ça) puis je lui affecte le char*, ça affiche NADA...
code de traduction :
/* Marche */
String x = "loll";
cout << x.sz << endl;
/* Marche pas!! */
String x;
x = "looll";
cout << x.sz << endl;
voila, merci d'avance...soit de m'aider, soit de confirmer la necessité du flingue -_-"
Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 20112 11 déc. 2005 à 11:55
désolé d'etre nul mais...interet d'avoir un char** plutot qu'un char* ?? je ne calle pas...qu'est-ce qui était faux dans mon code et que tu semblerais avoir rectifié ? Explique moi je suis nul....
fredcl
Messages postés547Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 7 octobre 20071 11 déc. 2005 à 12:52
Bon pour que tu comprennes oubli que c'est un pointeur imagine que c'est un entier int
tu as ta fonction
void mafonction(int mavaleur)
{
mavaleur = 3;
}
si tu fait
a = 2;
mafonction(a);
cout << a ;
cela affichera 2, car la modification de mavaleur n'as pas dépassé la porté de la fonction.
si tu as
void mafonction(int* mavaleur)
{
*mavaleur = 3;
}
l'appel de mafonction(&a); modifiera la valeur de a;
maintenant si tu remplace int par char* tu obtiens void mafonction(char** mavaleur)
et donc tu pourras modifier l'adresse contenue dans le pointeur (et aussi ce qui se trouve à l'adresse indiqué par le pointeur)
J'espère avoir été clair, la notion de pointeur est toujours assez difficile à comprendre au début. Mais avec un peu de persévérence tu finiras par comprendre.
Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 20112 11 déc. 2005 à 18:09
Bonsoir
Je vous remercie pour ces explications! fredcl, merci, ton code marche et a résolu le problême! Par contre, je ne pensais pas être débutant avec les pointeurs...je connaissais le systeme d'appel par valeur et par référence avec des types... mais je ne savais pas avec char*... merci à vous deux en tout cas :)