operateur = besoin d'aide pour le comprendre - C++ - Programmation
Marsh Posté le 25-10-2004 à 16:29:15
je suis pas sur, mais je crois qu'il faut plutot redefinir un operateur de convertion implicite
dans ton cas pour le type int
Code :
|
edit : definir, pas redefinir
Marsh Posté le 25-10-2004 à 16:31:45
en attendant que je test si quelqu'un a une autre idée ... sait-on jamais!
Marsh Posté le 25-10-2004 à 16:39:09
cris56
as tu un example d'un operateur int ou autre type pour moi voir exactement car la j'ai un doute sur un truc
Marsh Posté le 25-10-2004 à 16:49:51
edit : j'ai rien dit
edit : en gros tu retourne un int koi, tu bloque sur quoi ?
Marsh Posté le 25-10-2004 à 17:03:04
Merci cris ca marche!
Mais pour ce ki est de l'appel explicite c'est quoi dans le cadre d'un operateur int
ex : operateur =
objet = objet;
objet.operator = (objet);
mais pour l'operateur int?
int = objet;
???
Marsh Posté le 25-10-2004 à 17:07:36
ma question c 'est implicitement dans quels cas le compilo va faire appel a lui et comment ?
Marsh Posté le 25-10-2004 à 17:11:30
ne pas confondre avec http://forum.hardware.fr/forum2.ph [...] 980&cat=10
Marsh Posté le 25-10-2004 à 17:12:29
c'est imlicite, il sera appeler si besoin et si il est defini
mais comme ca fais un de truc plus de caché aux yeux du programmeur, c'est assez peu aprecié il me semble
Marsh Posté le 25-10-2004 à 17:14:02
si la converstion est sure et bien définie, y a pas trop de problème.
par contre si comme la STL de MS, tu fais fais
string::operator const char *() const
qui à le même comportement que c_str() ... là tu va dans le mur
Marsh Posté le 25-10-2004 à 17:17:23
Taz a écrit : static_cast<int>(o); |
excuse taz mais je ne te suis pas la...
tu peux reexpliqué
Marsh Posté le 25-10-2004 à 17:17:28
Taz a écrit : |
oui, voila un exemple à eviter
Marsh Posté le 25-10-2004 à 18:49:26
depuis que j'ai mis l'operateur int j'ai un conflit entre mon operateur int et un constructeur Cl_objet (int) pour les operations d'additions ex:
objet = objet1 + entier;
il n'en veux pas sauf si je mets ca :
objet = int(objet1) + entier;
ou
objet = objet1 + objet(entier);
Marsh Posté le 25-10-2004 à 18:50:04
le probleme c est que je voudrais arrivé a pouvoir faire
objet = objet1 + entier;
sans pour autant transtypé
Marsh Posté le 25-10-2004 à 19:10:49
c'est préférable...
Marsh Posté le 25-10-2004 à 19:11:20
non. je sais pas ce que tu branles ... va voir le lien que j'ai filé et t'as pas besoin d'opérateur de conversion
Marsh Posté le 26-10-2004 à 14:44:34
autre question :
si je veux surdefinir les operateurs de comparaison ==, !=, > , < ,>=, <= dois je absolument les surdefinir tous?
ou alors == , >, < sont suffisent?
Marsh Posté le 26-10-2004 à 15:06:57
donc je suis obligé!
arf merde...
merci cris
Marsh Posté le 26-10-2004 à 15:41:22
mais non gros boolet
http://forum.hardware.fr/hardwaref [...] 3998-1.htm
Marsh Posté le 26-10-2004 à 17:02:41
merci taz mais tu le redefinis quand meme
Code :
|
edit : j'ai rien dis
Marsh Posté le 26-10-2004 à 17:05:20
y a personne qui sait lire ? y en a pas un pour cliquer sur le lien, première ligne du topic ?
Marsh Posté le 26-10-2004 à 17:05:45
Marsh Posté le 26-10-2004 à 17:07:22
ça me fait pas marrer, ce topic est sans doute l'un des meilleurs que j'ai fait ...
Marsh Posté le 26-10-2004 à 17:09:33
je ne dis pas qu'il est nul au contraire mais ca fait un bout de temps que je n'ai plus fais du C++ il faut me laissé le temps de me souvenir de tout
Marsh Posté le 26-10-2004 à 17:11:46
pour les cout y a t il moyen d'avoir un format ?
ex si je veux afficher 000001-245-131-46
et non 1-245-131-46
Marsh Posté le 26-10-2004 à 17:15:53
C H A V E Z a écrit : je ne dis pas qu'il est nul au contraire mais ca fait un bout de temps que je n'ai plus fais du C++ il faut me laissé le temps de me souvenir de tout |
mais t'as rien à te souvenir du tout, t'as juste à utiliser
cout : oui. Trouve toi de la doc
Marsh Posté le 26-10-2004 à 17:19:44
merci pour l'info
Marsh Posté le 26-10-2004 à 17:20:33
ps : je prefere mettre quelque chose que je comprends completement pas toi !?
Marsh Posté le 26-10-2004 à 17:22:16
C H A V E Z a écrit : pour les cout y a t il moyen d'avoir un format ? |
Oui. http://juicystudio.com/tutorial/cpp/io.asp
Marsh Posté le 26-10-2004 à 17:22:59
c'est pourquoi ça que je fais des topics pour boolay. Sauf que t'es dans la catégorie des illétrés ... je peux rien y faire.
J'aurais même pas besoin de dire ça si tu l'avais lu.
Marsh Posté le 26-10-2004 à 17:29:24
Lam's MERCI ca m'a fait gagné du temps!
Marsh Posté le 26-10-2004 à 17:30:00
taz
et pourtant je l'ai lu
Marsh Posté le 26-10-2004 à 17:33:04
mon il. Y a tout dans le topic : quoi utiliser et une explication sur comment ça marche pour se décomplexer. Bon je me barre, je peux rien pour toi. Vouloir c'est pouvoir. Toi tu veux pas.
Marsh Posté le 27-10-2004 à 18:35:08
Taz ca marche au poil, j'ai recherché ce que je ne comprenais pas et la ca tourne impec! Merci
Marsh Posté le 25-10-2004 à 16:22:48
J'ai besoin de pouvoir faire une affectation implicite d'un type objet vers un type int
ex : entier = objet;
Si je surdefinis l'operateur suivant :
int Cl_objet::operator = (const Cl_objet & objet)
La ca marche seulement si je fais de l'affectation multiple ex :
entier = objet = objet;
Si j'en definis un indépendament de ma class le compilo me met "must be a <unknow> member"
Si quelqu'un peut me venir en aide et me dire pourquoi ca ne fonctionne pas.
D'avance un grand merci