probleme avec pointeur sur objet - C++ - Programmation
Marsh Posté le 25-03-2004 à 16:05:55
pitié, faites que Taz ne passe pas par là ... paix à son âme.
Marsh Posté le 25-03-2004 à 16:08:25
pourquoi? c'est qui taz?
Marsh Posté le 25-03-2004 à 16:11:02
dés qu'il seras arrivé ... ton pire ennemi.
La tu fais du C ... tu remplace class par struct, cout par printf et cin par scanf et opla t as du C.
Marsh Posté le 25-03-2004 à 16:12:09
ben non c'est du c++, ya une classe, on peut pas faire ca en c?
Marsh Posté le 25-03-2004 à 16:46:45
cris56 a écrit : |
mais bon ton code est très laid.
On peut pas appeler ça du C++...
Marsh Posté le 25-03-2004 à 16:47:37
Sinon, pour ton pb:
> nom=(char *)malloc(strlen(nomp));
Ca serait pas
nom=(char *)malloc(strlen(nomp)+1);
Maintenant, si tu veux vraiment que ce soit du c++, vaudrait mieux faire un truc de ce genre:
Code :
|
J'ai pas de compilo c++ sous la main pour verifier que ca passe correctement, mais ca te donnera une idée du style a employer...
A+,
Marsh Posté le 25-03-2004 à 17:00:25
cris56 a écrit :
|
En plus dans le main, profile n'est jamais initialisé !
Fallait déjà écrire un truc genre
pProfile profile = new Profile;
Marsh Posté le 25-03-2004 à 17:04:36
cris56 a écrit : ben non c'est du c++, ya une classe, on peut pas faire ca en c? |
ton code est du C (et du mauvais) à part les cout...
1 bon point pour gilou. seulement moi, seulement c'est plus propre de séparer E/S et stockage de données.
donc le mieux, est de
Code :
|
Marsh Posté le 25-03-2004 à 17:32:59
merci a tous pour vos reponse, j'ai arrange ca en suivant vos conseil mais du coup je suis plus du tout sur, je connais pas tout ca
Code :
|
Marsh Posté le 25-03-2004 à 17:39:54
merci,
flush c'est pour vider le tampon, donc tu fait ca avant une saisie, c'est ca?
sinon pour le constructeur, j'ai vu qu'on pouvais faire ca :
Profile(string p_nom,string p_adresse): adresse(p_adresse),nom(p_nom){};
quel est l'avantage ?
j'ai passer les string par reference dans le constructeur (voir maj de l'autre post), c'est mieux ou inutile?
Marsh Posté le 25-03-2004 à 17:44:04
cris56 a écrit : merci, |
oui. cout est généralement bufferisé en mode ligne, donc quand tu fais un cout sans '\n' suivi d'un cin, il vaut mieux flusher pour que l'affichage se fasse bien avant la saisie
cris56 a écrit : |
1) les const & évite la copie inutile des paramètres
2) c'est la synthaxe d'initialization. sinon, chaque champ est d'abord construit implicitement (comme si tu écrivait adresse(), puis operator=, etc ... la syntaxe d'initialisation est simple, logique, et 3x fois plus rapide
Marsh Posté le 25-03-2004 à 17:49:41
a ouai d'accord, c'est bon a savoir ca
sinon encore une question (desole, c'est la derniere)
pour les accesseur je retourne un objet string par valeur, mais je devrai plutot retourner par reference aussi, non?
en tout cas je te remerci pour tout ces eclaircissement
Marsh Posté le 25-03-2004 à 17:54:25
le const a quel utilite a ce moment la? pourquoi il vaut mieux le mettre en retour?
(c'est peut etre con ce que je dit mais sur la plupart des sources que je vois le const est omis pour une valeur retour par reference...)
Marsh Posté le 25-03-2004 à 17:57:06
ben si tu renvoie une & seule, tu permets aussi l'accès en écriture (à moins que ce ne soit ce que tu veux)
Marsh Posté le 25-03-2004 à 18:01:54
ok, oui en effet je ne desir pas proteger par un const pour le moment
Marsh Posté le 25-03-2004 à 18:18:03
> c'est plus propre de séparer E/S et stockage de données
J'allais pas tout lui faire non plus...
Sinon j'aurais fait quelque chose comme:
Code :
|
EDIT: Ah je vois que c'est a peu pres a quoi le topic est arrive pendant mon absence (pour bechage de poireaux)
A+,
Marsh Posté le 25-03-2004 à 18:20:16
la tu t'es planté gilou.
Code :
|
après tu peux rajouter
Code :
|
cout << prof;
Marsh Posté le 25-03-2004 à 18:22:42
> la tu t'es planté gilou.
Au sens que je l'ai pas fait assez generique pour ton gout?? J'ai pas essaye de sortir de son pb initial, sinon il y aurait aussi des accesseurs par champ dans la classe.
A+,
Marsh Posté le 25-03-2004 à 18:23:56
gilou a écrit : > la tu t'es planté gilou. |
oui, et qu'il manquait un const
Marsh Posté le 25-03-2004 à 18:28:03
moi j aurai penseé au const
sinon je vait voir ca pour le cout<<prof
Marsh Posté le 25-03-2004 à 18:32:42
Taz a écrit : oui, et qu'il manquait un const |
Argh! I was Tazed!
C'est un oubli dont je suis coutumier quand je me relis pas celui là.
Je vas editer mon post original.
(Pour etre honnete, pour le print, j'avais bien pense a une fonction generique avec un ostream lors de mon premier post, mais j'avais eu la flemme de la taper, )
A+,
Marsh Posté le 25-03-2004 à 15:54:48
voila ca fait une journée que je cherche ou est l'erreur mais rien a faire, le code ci dessous compile mais plante a l'execution