comment déclarer un nouvel operateur ? - C++ - Programmation
Marsh Posté le 16-01-2003 à 18:22:48
Tu ne peux pas creer de nouveaux opérateurs en C++, mais tu peux utiliser les opérateurs existant.
Marsh Posté le 16-01-2003 à 18:28:19
il est aussi possible de surcharger certains opérateurs ... en les obligeant de faire ce qu'on veut ...
Marsh Posté le 16-01-2003 à 18:59:36
| Code : 
 | 
 
 
Ceci est tiré d'une source qui fonctionne si on enleve les lib par defaut dans vc++ 6.0 
 
ce n'est pas la déclaration de l'operateur new ?
Marsh Posté le 16-01-2003 à 19:03:38
ah ! a ce que je viens de voir on peut juste redéclarer les existants. 
 
je voudrais redéclarer ^ et % (puissance et modulo) pour qu'ils fonctionnent avec mon type. Comment faire ?
Marsh Posté le 16-01-2003 à 19:08:01
exemple :  
complexe operator "+"(complexe a,complexe b){};
Marsh Posté le 16-01-2003 à 19:09:41
Il faut que ta nouvelle déclaration prenne en paramètre au moins 1 objet. 
 
Exemple d'operateur + pour une classe BigInt : 
| Code : 
 | 
Marsh Posté le 16-01-2003 à 19:09:45
| lapiou a écrit : exemple :   | 
c'est là le future du C++, mais rien de standard, j'en ai juste vu dans des drafts du comité et dans des articles de BS
Marsh Posté le 16-01-2003 à 19:11:12
avec "+" il me pond 6 erreurs,  
avec + il me sort qu'il doit au moins y avoir un operateur de type class
Marsh Posté le 16-01-2003 à 19:12:11
| BlackGoddess a écrit :   | 
 
 
new existe déjà dans la base du C++ ...
Marsh Posté le 16-01-2003 à 19:18:10
bouarf je lache laffaire je v faire des fonctions plutot ...
Marsh Posté le 16-01-2003 à 19:19:09
non en fait le lien explique bien je m'y remet 
Marsh Posté le 18-01-2003 à 03:53:45
Version globale amie
| Code : 
 | 
 
Version membre
| Code : 
 | 
 
Utilisation
| Code : 
 | 
 
 
Fais attention avec ^, il est moins prioritaire que l'addition et même la comparaison, et cela ne peut se changer.
Marsh Posté le 18-01-2003 à 05:54:43
| western a écrit : il est aussi possible de surcharger certains opérateurs ... en les obligeant de faire ce qu'on veut ...  | 
 
Non, non, non, pas "ce qu'on veut", on prolonge leur fonctionnement habituel sur des nouveaux objets, par exemple, prolonger + sur des vecteurs (addition membre à membre), c'est bon, mais on fait pas n'improte quoi, ne serait-ce qu'à cause des priorités et associativités fixes mais surtout pour la qualité (et donc, entre autre la lisibilité du code) 
ex : 
b^c=a  
si je te dis que j'ai défini ^ comme affectation pour mon type et = comme une loi de groupe, à la relecture, c'est pas hyper évident et la qualité baisse inévitablement. 
 
Préservez un maximum des propriétés de vos opérateurs. Et utilisez des fonctions qui sont largement plus lisibles et moins casse-gueules.
Marsh Posté le 18-01-2003 à 11:55:56
merci pour toutes ces explications 
Marsh Posté le 16-01-2003 à 18:14:40
Bonjour,
g déclaré un nouveau type : MYTYPE
je voudrais créer un nouvel opérateur pour pouvoir faire des opérations avec mes types. Comment faire ?
je voudrais pouvoir faire :
comment déclarer Oper pour pouvoir faire comme si c t une fonction ?
mci
bonne prog
---------------
-( BlackGoddess )-