J'écris une bibliothèque de polynômes et j'ai
quelques problèmes avec l'opérateur exposant (^).
J'ai écrit toutes les surcharges nécessaires et
ceci par, exemple, compile:
Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4;
Par contre, ceci ne compile pas:
Polynome P = X^3 - 6 * X^2 + 9 * X - 4;
Par ailleurs X^2 - 1 compile et donne X.
Je n'ai donc pas la bonne priorité.
Il l'accepte si je change quelques pow en power par exemple.
--
Etienne
Fabien LE LEZ
On 28 Dec 2005 01:50:36 -0800, "kanze" :
En revanche, je connais bien LaTeX. En LaTeX, ^ est l'opérateur de superscript ; ce n'est l'opérateur de puissance que dans la mesure que le superscript en question représente une puissance.
Et d'ailleurs il représente parfois un indice, quand on n'a plus de place en bas pour le mettre.
On 28 Dec 2005 01:50:36 -0800, "kanze" <kanze@gabi-soft.fr>:
En revanche, je connais bien LaTeX. En LaTeX, ^ est l'opérateur
de superscript ; ce n'est l'opérateur de puissance que dans la
mesure que le superscript en question représente une puissance.
Et d'ailleurs il représente parfois un indice, quand on n'a plus de
place en bas pour le mettre.
En revanche, je connais bien LaTeX. En LaTeX, ^ est l'opérateur de superscript ; ce n'est l'opérateur de puissance que dans la mesure que le superscript en question représente une puissance.
Et d'ailleurs il représente parfois un indice, quand on n'a plus de place en bas pour le mettre.
Il l'accepte si je change quelques pow en power par exemple.
Ah oui... Mais bon, c'est pas comme si j'aurais du tester ce que j'écris, hein ? :)
Et ce n'est pas comme si tester aurait forcément révéler le problème. Le problème (je suppose), c'est que pow est déjà défini, dans <math.h>. Si tu as inclu <math.h>, le code ne se compile pas. Sinon, si un autre en-tête que tu as inclu inclut <math.h>. Dans la pratique, malgré ce qui est écrit dans la norme, l'inclusion (directe ou indirecte) de <cmath> aurait le même effet. Si tu n'écris que le bout de code en question, sans inclure quoique ce soit, ça doit marcher.
Note que dans la déclaration de la fonction, on pourrait écrire :
Polynome operator*( Polynome const& p, class pow const& e )
Mais l'appel à pow dans la function invoquera toujours la fonction pow, et non le constructeur de la classe pow.
-- James Kanze GABI Software 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
Il l'accepte si je change quelques pow en power par exemple.
Ah oui... Mais bon, c'est pas comme si j'aurais du tester ce
que j'écris, hein ? :)
Et ce n'est pas comme si tester aurait forcément révéler le
problème. Le problème (je suppose), c'est que pow est déjà
défini, dans <math.h>. Si tu as inclu <math.h>, le code ne se
compile pas. Sinon, si un autre en-tête que tu as inclu inclut
<math.h>. Dans la pratique, malgré ce qui est écrit dans la
norme, l'inclusion (directe ou indirecte) de <cmath> aurait le
même effet. Si tu n'écris que le bout de code en question, sans
inclure quoique ce soit, ça doit marcher.
Note que dans la déclaration de la fonction, on pourrait écrire :
Polynome operator*( Polynome const& p, class pow const& e )
Mais l'appel à pow dans la function invoquera toujours la
fonction pow, et non le constructeur de la classe pow.
--
James Kanze GABI Software
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
Il l'accepte si je change quelques pow en power par exemple.
Ah oui... Mais bon, c'est pas comme si j'aurais du tester ce que j'écris, hein ? :)
Et ce n'est pas comme si tester aurait forcément révéler le problème. Le problème (je suppose), c'est que pow est déjà défini, dans <math.h>. Si tu as inclu <math.h>, le code ne se compile pas. Sinon, si un autre en-tête que tu as inclu inclut <math.h>. Dans la pratique, malgré ce qui est écrit dans la norme, l'inclusion (directe ou indirecte) de <cmath> aurait le même effet. Si tu n'écris que le bout de code en question, sans inclure quoique ce soit, ça doit marcher.
Note que dans la déclaration de la fonction, on pourrait écrire :
Polynome operator*( Polynome const& p, class pow const& e )
Mais l'appel à pow dans la function invoquera toujours la fonction pow, et non le constructeur de la classe pow.
-- James Kanze GABI Software 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
"kanze" a écrit ...
Mais l'appel à pow dans la function invoquera toujours la fonction pow, et non le constructeur de la classe pow.
Oui, c'est bien ça.
--
Etienne
"kanze" <kanze@gabi-soft.fr> a écrit ...
Mais l'appel à pow dans la function invoquera toujours la
fonction pow, et non le constructeur de la classe pow.
On Thu, 29 Dec 2005 09:30:46 +0100, "Etienne Rousee" :
Polynome p= CreePolynome() << 1 << 2 << -3;
Et pour le coup, si tu veux construire le polynôme (x^2005 + 2x - 3) , t'es pas rendu...
On doit pouvoir faire un truc du genre
p= 1,2005 << 2,1 << -3,0;
Jean-Marc Bourguet
Fabien LE LEZ writes:
On Thu, 29 Dec 2005 09:30:46 +0100, "Etienne Rousee" :
Polynome p= CreePolynome() << 1 << 2 << -3;
Et pour le coup, si tu veux construire le polynôme (x^2005 + 2x - 3) , t'es pas rendu...
On doit pouvoir faire un truc du genre
p= 1,2005 << 2,1 << -3,0;
Je préfère encore la surcharge de ^.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ <gramster@gramster.com> writes:
On Thu, 29 Dec 2005 09:30:46 +0100, "Etienne Rousee"
<etienne@rousee.org>:
Polynome p= CreePolynome() << 1 << 2 << -3;
Et pour le coup, si tu veux construire le
polynôme (x^2005 + 2x - 3) , t'es pas rendu...
On doit pouvoir faire un truc du genre
p= 1,2005 << 2,1 << -3,0;
Je préfère encore la surcharge de ^.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
On Thu, 29 Dec 2005 09:30:46 +0100, "Etienne Rousee" :
Polynome p= CreePolynome() << 1 << 2 << -3;
Et pour le coup, si tu veux construire le polynôme (x^2005 + 2x - 3) , t'es pas rendu...
On doit pouvoir faire un truc du genre
p= 1,2005 << 2,1 << -3,0;
Je préfère encore la surcharge de ^.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ
On 29 Dec 2005 19:31:24 +0100, Jean-Marc Bourguet :
Je préfère encore la surcharge de ^.
C'est normal. J'ai tenté de trouver l'interface la plus catastrophique possible.
On 29 Dec 2005 19:31:24 +0100, Jean-Marc Bourguet <jm@bourguet.org>:
Je préfère encore la surcharge de ^.
C'est normal. J'ai tenté de trouver l'interface la plus catastrophique
possible.