là y´a deux écoles pour le this :
ceux qui le mettent PARTOUT ! pour bien montrer ce qui appartient à la classe
et y´a ceux qui utilisent une convention de nommage pour distinguer les membres ; la plus courante étant m_ ( comme member), on trouve aussi beaucoup de _ tout court
à toi de voir ce que tu préfères, mais apres tu dois pouvoir écrire des trucs genre :
m_pToto->toto()(Toto::TOTO)
en sachant qui est quoi ; bon c´est crade juste pour l´exemple, mais c´est une bonne pratique. Tu peux fouiller sur le net pour trouver un PDF nommé " C++ Coding Standard", y sont détaillées les pratiques les plus courantes
^^^^ ooops, parenthésage foireux... bref, c´était juste pour l´exemple ; )
TechSlash Posté le 29 juin 2004 à 23:53:16
> arnaud-le-vrai
Est-ce que ta question est en rapport avec le C++ ( je veux dire, est-ce que tu cherches à comprendre ce langage en particulier) ? Si c´est le cas, je pense que le site de lapintade donne suffisement d´information pour savoir où aller pour commencer ( ça couvre un peu de tout en ce qui concerne faire des jeux en fait):
http://perso.wanadoo.fr/ck/Langages.htm
Si tu cherches à comprendre la programmation au sens général, tu aurais probablement dû partir un nouveau topic... Sinon je suppose que tu devrais te trouver un bouquin et faire des recherches sur le web. Voici un site quand même:
http://fr.wikipedia.org/wiki/Programmation
Je te remercie beaucoup
TechSlash
J´ignore pourquoi mais
m_pToto->toto()(Toto::TOTO)
m´a fait rigoler
Merci LGV
bonjours a tous je debute en C et je trouve pas l´erreur dans le code suivant :
int main();
/ /déclaration
char reponse;
/ /attente de la réponse
reponse = getchar();
/ /absorbe la validation de la réponse par enter
getchar();
/ /si on a appuyé sur ´o´
if ( reponse == ´o´);
{
printf(" l´utilisateur a appuye sur ´o´ " );
}
/ /ou sur ´n´
else if ( reponse == ´n´);
{
printf(" l´utilisateur a appuye sur ´n´ " );
}
/ /sinon
else;
{
printf(" mauvaise reponse " );
}
j´aimerai que qulq´un me dise ou ai l´erreur et m´explique pourqois c´est une erreur ! !!
merci
" int main();
/ /code"
Ce serait pas plutôt :
int main()
{
/ /code
}
?
j´arrive en retard : j´étais pas la hier soir
TechSlash >
ce que tu fais ici :
mastring s = " plouf";
je sais pkoi ça plante sur le delete :
en 1 seule ligne, tu fais bcp de choses :
tout se passe comme si tu faisais :
mastring tmp("plouf");
mastring s=tmp;
reprenons la ligne totale :
mastring s = " plouf";
il voit " plouf", c´est un const char*, donc il va construire une instance de mastring, en utilisant le constructeur mastring(const char*) que tu as défini.
Apres, a ton avis, cette instance, c´est s ?
--> NON.
en effet, l´instance créée est le " tmp" si on décompose
ensuite, il voit que tu fais mastring s;
il appelle donc le constructeur mastring(void); que tu as défini.
Et ensuite, il va faire un =, donc comme TU N´AS PAS SURCHARGE L´OPERATEUR = ( et la est ton erreur)
il copie betement tmp dans s, champ à champ.
Ainsi
tmp.txt est un pointeur qui pointe sur la zone A273412F ( par exemple), et s.txt est également un pointeur qui pointe sur A273412F
" tmp" se détruit automatiquement, appelant son destructeur, et donc LIBERE A273412F.
et quand s est deleté, il essaie de libérer A273412F, or ça a déja été libéré
--> PLANTAGE.
voila, donc si tu veux qu´une classe soit robuste, il faut qu´elle aie :
constructeur par défaut ( que tu as mis)
constructeur par copie ( que tu as mis)
surcharge du = ( que tu as oublié)
int main(){ / / les instruction suivante sont DANS la fonction main
/ /déclaration
char reponse;
/ /attente de la réponse
reponse = getchar();
/ /absorbe la validation de la réponse par enter
getchar();
/ /si on a appuyé sur ´o´
if ( reponse == ´o´);
{
printf(" l´utilisateur a appuye sur ´o´ " ) ;
}
/ /ou sur ´n´
else if ( reponse == ´n´);
{
printf(" l´utilisateur a appuye sur ´n´ " ) ;
}
/ /sinon
else;
{
printf(" mauvaise reponse " ) ;
}
getchar(); / / pour eviter que le programme se ferme avant d´avoir pu lire la reponse
return 0; / / int main -> doit retourner une valeur entiere
}
De plus, les caractères, c´est ´n´ et pas `n` , je crois ; )
( apostrophes ( simple quotes) et non , euh . .. " truc sur la touche 7" )
Et, j´oublais également : pas de " ;" après les if() et elseif() !
if(condition)
{
/ /...
}
else if(autre condition)
{
/ /...
}
else
{
/ /...
}
je suis desolé mais meme avec le code de ruffi je peut pas compiler il me retrouve encore des erreur ! !!
marque les erreurs qu´il te donne ![]()
alors il me mais :
C:\Documents and Settings\...[Warning] In function `int main()´:
17 C:\Documents and Settings\...parse error before `else´
21 C:\Documents and Settings\...parse error before `else´
C:\Documents and Settings\...[Build Error] [main8.o] Error 1
voila les eurreur qu´il me marque ! !!
Regarde ce qu´a dit Ceacy ( j´avait pas vu cette erreur tout de suite ) :
Et, j´oublais également : pas de " ; " après les if() et elseif() !
if(condition)
{
/ / ...
}
else if(autre condition)
{
/ / ...
}
else
{
/ / ...
}
arf ! !!
ruffi s´est trompé :
ce n´est pas :
if ( reponse == ´o´);
mais :
if ( reponse == ´o´)
pas de ; apres le if, car sinon, ça le fini, alors qu´il faut bien qu´il continue ( les {} qu´il y a derriere lui appartiennent)
et pareil pour tous les if
int main(){ / / les instruction suivante sont DANS la fonction main
/ / déclaration
char reponse;
/ / attente de la réponse
reponse = getchar();
/ / absorbe la validation de la réponse par enter
getchar();
/ / si on a appuyé sur ´o´
if ( reponse == ´o´)
{
printf(" l´utilisateur a appuye sur ´o´ " ) ;
}
/ / ou sur ´n´
else if ( reponse == ´n´)
{
printf(" l´utilisateur a appuye sur ´n´ " ) ;
}
/ / sinon
else
{
printf(" mauvaise reponse " ) ;
}
getchar(); / / pour eviter que le programme se ferme avant d´avoir pu lire la reponse
return 0; / / int main -> doit retourner une valeur entiere
}
--------------
voila.
Le probleme venait que ton if se finissait lorsque tu metait le ; ( il aurait fait les instructions entre acolades {} a chaque fois)
L´ereure venait donc que le else n´etait alors plus ataché avec un if.
je m´etait pas trompé, j´ai recopier son ereur sans y avoir preté atention ![]()
po grave , ça nous arrive a tous de faire des erreurs, c´est de l´inattention, C humain
mais faut bien préciser le message d´erreur du compilo, pour qu´on puisse la trouver rapidement ![]()
ok la prochaine fois je preciserai et la je vous remercie tous. je trouve que vous ete super car c´est pas tout le monde qui perderai sont tps pour aider des debutant qu´il connaisse meme pas.
MERCI
pas de soucis ![]()
JY² : hmm, sauf erreur de ma part, tout compilo modifie un :
MyClass my_instance = my_value;
en un :
MyClass my_instance(my_value);
si le ctor adapté existe ; comme on expliquait hier, logiquement il devrait y avoir 3 opérations d´effectuées ( que tu détailles, les 2 ctos + l´assignation). Mais du au compilo, son code tourne et d´autres erreur étaient situées dans le code.