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 )-