Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VC++ & CodeBlocks

8 réponses
Avatar
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

8 réponses

Avatar
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.
Avatar
James Kanze
On Jul 3, 7:45 pm, Fabien LE LEZ wrote:
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
Avatar
Etienne Rousee
"James Kanze" a écrit...
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
Avatar
Alp Mestan
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.
Avatar
Neels
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...
Avatar
Mickaël Wolff
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
Avatar
Alain
> 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...
Avatar
Alp Mestan
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.