VC++ & CodeBlocks

Le
Etienne Rousee
Bonjour,

J'ai un truc bizarre:

J'ai fait une classe Polynome avec surcharge des
opérateurs habituels et le code suivant passe sous
VC++ 2005 et pas sous CodeBlocks 8.02:

Polynome P,X;
double d;
P *= X - d;

Par contre, le suivant passe sous les deux:

Polynome P,X;
double d;
Polynome tmp = X - d;
P *= tmp;

Que se passe-t-il ?

Merci d'avance.

--

Etienne
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien LE LEZ
Le #11181851
On Thu, 3 Jul 2008 18:29:14 +0200, "Etienne Rousee"

J'ai fait une classe Polynome avec surcharge des
opérateurs habituels et le code suivant passe sous
VC++ 2005 et pas sous CodeBlocks 8.02:



Si je ne m'abuse, CodeBlocks est un IDE, pas un compilateur.

Polynome P,X;



Je t'invite à réduire ta classe Polynome, afin d'avoir le code minimal
qui reproduise le problème. Si ça ne suffit pas à te faire trouver la
solution tout seul, poste ledit code ici.
Par ailleurs, généralement, un compilateur ne ressort pas un booléen :
si le code ne compile pas, il affiche un message d'erreur. Je t'invite
à le lire.
James Kanze
Le #11185221
On Jul 3, 7:45 pm, Fabien LE LEZ
On Thu, 3 Jul 2008 18:29:14 +0200, "Etienne Rousee"



>J'ai fait une classe Polynome avec surcharge des
>opérateurs habituels et le code suivant passe sous
>VC++ 2005 et pas sous CodeBlocks 8.02:



Si je ne m'abuse, CodeBlocks est un IDE, pas un compilateur.



>Polynome P,X;



Je t'invite à réduire ta classe Polynome, afin d'avoir le code
minimal qui reproduise le problème. Si ça ne suffit pas à te
faire trouver la solution tout seul, poste ledit code ici.
Par ailleurs, généralement, un compilateur ne ressort pas un
booléen : si le code ne compile pas, il affiche un message
d'erreur. Je t'invite à le lire.



C'est certainement comme ça qu'il faut procéder, mais quand ça
marche avec une variable explicite, et non avec un temporaire
(valeur de retour d'une fonction), il y a tout à parier qu'il y
a une erreur de const. D'autant plus qu'on sait que VC++ a une
extension qui autorise l'initialisation d'une référence
non-const avec un temporaire, et que cette extension est active
par défaut. (Il faut préciser /Za pour la désactiver.) Il y a
donc tout à parier que le type du paramètre de son opérateur *=
est Polynome&, et non Polynome const&, comme il se doit.

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Etienne Rousee
Le #11186281
"James Kanze"
Il y a donc tout à parier que le type du paramètre
de son opérateur *= est Polynome&, et non
Polynome const&, comme il se doit.



Bien sûr, tu as tout à fait raison, James.
Bon, j'en ai quelques autres à corriger en chaîne,
je vais voir ça.
Merci.

--

Etienne
Alp Mestan
Le #11195931
D'ailleurs, de nombreuses FAQs (dont la FAQ C++ de Developpez) en
parlent... Documente toi sur le sujet pour comprendre le fond de la
chose et ainsi être sûr de ne pas reproduire ce genre d'erreurs car
cela te semblerait totalement incohérent.
Neels
Le #11196151
Alp Mestan wrote:
D'ailleurs, de nombreuses FAQs (dont la FAQ C++ de Developpez) en
parlent...



Eviter quand même de citer des documents bidons, remplis d'inepties, et
écrits par des gamins de 15 ans...
Mickaël Wolff
Le #11196551
Neels a écrit :
remplis d'inepties



Je suis curieux de connaître les inepties qui te font sursauter :) Et
pourquoi.

écrits par des gamins de 15 ans...



Sur quoi te bases-tu ?

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Alain
Le #11196741
> Neels a écrit :
remplis d'inepties



Je suis curieux de connaître les inepties qui te font sursauter :) Et
pourquoi.

écrits par des gamins de 15 ans...



Sur quoi te bases-tu ?



L'âge est ecrit dans les propriétés des utilisateurs, entre autres de
ceux qui osent se prendre pour des profs.
Il vaut mieux en rire tellement c'est énorme...
Sans parler des forums, une véritable secte, où des mômes modérateurs
de 18 balais, s'amusent à modifier et supprimer les posts dès que ça ne
va pas dans le sens du site (et de sa pub massive (flooding))
C'est assez hallucinant...
Alp Mestan
Le #11197231
Les questions/réponses sont revues par des experts C++ français.
Ensuite, généralement ce ne sont pas des gamins de 15 ans qui
interviennent et rédigent (pas comme sur le site du zéro), mais des
programmeurs C++ avertis.

Si tu as un problème avec la politique de Developpez, c'est autre
chose.
Publicité
Poster une réponse
Anonyme