je veux qu'un op binaire soit evalué de droite a gauche (comment ?) - C++ - Programmation
Marsh Posté le 27-01-2003 à 19:28:52
une autre solution que je vois serait de re-surcharger le membre de gauche de >> de tel façon a ce qu'il prenne en parametre une fonction (type*, ... hem ...
benh ça risque de pas etre posssible comme ça en fait
Marsh Posté le 27-01-2003 à 19:30:35
Je pense pas que tu puisse changer ça. Les priorité des opérateurs et leur sens d'évaluation me semble plutôt immuable. Enfin je peux me tromper.
Marsh Posté le 27-01-2003 à 19:35:54
je tient a preciser que je surcharge << et >> avec deux membre, et que ce n'est donc pas une methode membre d'un objet.
J'ai lu aussi que pour l'operateur++ afin de le mettre en post fixé i++ par exemple, il faut faire ceci : operator++(int)
au lieu de operator++() tout cours pour le prefixé.
Peut etre est ce une voie a explorer.
Marsh Posté le 27-01-2003 à 19:40:23
LetoII a écrit : Je pense pas que tu puisse changer ça. Les priorité des opérateurs et leur sens d'évaluation me semble plutôt immuable. Enfin je peux me tromper. |
en affet l'associativité des opérateurs ainsi que leur priorité est immuable dans le c++ :
http://www-agrw.informatik.uni-kl. [...] dence.html
Marsh Posté le 27-01-2003 à 19:41:37
nan, les opérateur de post/pré incrémentation/décrémenttion sont un cas à part. En ce qui concerne ton pb j'ai jamais rien vu qui permete de changer les sens d'évaluation ou les priorité d'opérateurs. Ce qui ne veut pas dire que ça n'existe pas.
Ce serait bien que tu passe les proto de tes opérateurs.
Marsh Posté le 27-01-2003 à 19:49:14
Arg ! Deja, vouloir donner aux opérateurs un sens qu'ils n'ont pas c'est mal. Changer leur priorité ou leur sens d'évalutation !!!
Z'ètes fous, vous trouvez pas que le C++ est déjà assez lent à compiler et assez compliqué comme ça ?
Marsh Posté le 27-01-2003 à 20:00:28
Code :
|
Marsh Posté le 27-01-2003 à 20:02:33
Kristoph a écrit : Arg ! Deja, vouloir donner aux opérateurs un sens qu'ils n'ont pas c'est mal. Changer leur priorité ou leur sens d'évalutation !!! |
Perso c juste pour ma culture perso. Ca me viendrait pas à l'idée de modifier ça dans un prog.
Marsh Posté le 27-01-2003 à 20:05:04
je viens de penser que je pourrais munir les objets a inserer de la methode Plist<T>& operator>>(Plist<T> &l), mais il faudrait dans ce cas que je face ceci:
Code :
|
Marsh Posté le 27-01-2003 à 20:10:29
Kristoph a écrit : Arg ! Deja, vouloir donner aux opérateurs un sens qu'ils n'ont pas c'est mal. Changer leur priorité ou leur sens d'évalutation !!! |
Nan m'en fou.
C'est une grosse lacune du c++ de pas pouvoir definir des operateurs existant pas. ( c moi qui le dit )
Marsh Posté le 27-01-2003 à 20:10:49
karim63 a écrit : je viens de penser que je pourrais munir les objets a inserer de la methode Plist<T>& operator>>(Plist<T> &l), mais il faudrait dans ce cas que je face ceci:
|
Je veux pas faire chier, mais ça me semble pas changer le sens d'évaluation
Marsh Posté le 27-01-2003 à 20:36:17
LetoII a écrit : |
mmm correct !
Marsh Posté le 27-01-2003 à 20:48:41
ReplyMarsh Posté le 27-01-2003 à 21:41:06
je trouve cette idée malsaine
Marsh Posté le 27-01-2003 à 21:48:22
que je sache, si on a deux opérateurs identiques, c'est celui de gauche qui est prioritaire... je doute que tu arrives à tes fins
Mais pourquoi vouloir a >> b >> c au lieu de c << b << a ??
Remarque, je vois bien un moyen par création d'une classe équivalente à un entier que tu pourrais enfiller, mais il faut que ton enfillade soit commutative => on ne change pas l'interprétation de gauche à droite. Pour aller vite, je crois que tu peux faire un héritage sur le type entier, mais ça dépend peut-être du compilo.
Marsh Posté le 27-01-2003 à 21:57:05
Code :
|
J'ai resolu le probleme
Avec cet operateur qui est en bas de cette page, ça marche http://www-agrw.informatik.uni-kl. [...] dence.html
benh je voulait juste un operateur pour ajouter en queue ou en tete.
Merci SchnapsMann
Marsh Posté le 28-01-2003 à 06:48:48
karim63 a écrit : C'est une grosse lacune du c++ de pas pouvoir definir des operateurs existant pas. ( c moi qui le dit ) |
Ça arrive.
Marsh Posté le 27-01-2003 à 19:21:41
voilà j veux faire ceci la premiere ligne ajoute des entier en fin de liste l et la seconde ajoute au debut.
Sauf que vous voyez bien que j'ai du rajouter des parentheses car sinon il veut po et croit que je veux enfiler deux entier* .
Je sais qu'en prolog on peut changer le sens d'evaluation, mais en c++ je sais pas.
Je voudrais que ça evalue de la droite vers la gauche.
Sinon faudrait que je fasse ça mais c tout nul et en plus ça enfile pas les elements dans le bon ordre.
Une idée me vient à l'instant ça serait la recursivité , mais je vois pas trop