pkoi je peux pas faire x* operator+(x*,x*) ? - C++ - Programmation
Marsh Posté le 18-12-2002 à 21:10:57
Peut etre parceque l'operateur + est deja defini sur tous les pointeurs existants, sauf sur les pointeurs de fonctions
Marsh Posté le 18-12-2002 à 21:23:52
Kristoph a écrit : Peut etre parceque l'operateur + est deja defini sur tous les pointeurs existants, sauf sur les pointeurs de fonctions |
mouais. C dommage.
Je veux bien admettre que c'est inutile et stupide d'additioner deux pointeurs de la même façon qu'on additionerai un pointeur et nombre. p++ par exemple. Mais par contre on devrait pouvoir surdefinir quand même avec nos propres modalités. Je trouve que ça enleve quand même un superbe possiblité, juste parceque on pourrait croire que on veut additioner deux pointeurs. Mais si c'est pas possible je vois pas pkoi ils bloquent une telle surcharge.
Marsh Posté le 18-12-2002 à 22:49:55
Je trouve quand même ton operateur + douteux si tu veux mon avis. Juste pour rigoler, dis nous ce que tu voulais faire avec
Marsh Posté le 18-12-2002 à 22:57:39
karim63 a écrit : Pourquoi operator+ peut pas prendre des pointeurs en parametre ? |
d'un point de vue C++, ça veux pas dire grand chose, par contre tu peux passer des objets par référence, ce qui revients au même...
Marsh Posté le 19-12-2002 à 00:09:31
bjone a écrit : |
bah nan pas trop.
En fait ce qui m'interresse c'est surtout de renvoyer un pointeur sur objet faute de mieux. Y a un topic de moi pas loin sur cast hierarchie etc.
Le projet que j'ai a faire est moitié chaud.
G pas de scanner donc peut pas vous montrer.
En effet sur une hierachie d'objet, si je fait une fonction qui renvoit le type le plus grand celui qui englobe tout, et bien comme c'est pas des pointeurs, il me cast mon objet dans la classe de base.
Enfin on a discuté avec nraynaud, mais bon moi je debute en c++ et les histoires de contrat et tout ça ça me passe un peu au dessus, vu que c++ parait quand même un lagage assez bidouille d'un point de vu novice.
Marsh Posté le 19-12-2002 à 06:36:20
Les concepteurs du C++ ont décidé que pour surcharger un opérateur, il faut au moins un des arguments de type utilisateur.
Or, un pointeur est un type intégré, fut-il sur un type utilisateur.
La raison est de ne pas permettre de dévoyer la sémantique du langage pour ses types intégrés.
Ça se comprends, mais du coup ça interdit de récupérer pour son compte les opérations non-valides en C++.
Moi aussi ça m'a gêné quand j'ai voulu légaliser l'affectation de tableaux. Niet !
On ne peut même pas jouer sur la conversion de types intégrés en types utilisateur par constructeur implicite.
Marsh Posté le 19-12-2002 à 11:56:31
Musaran a écrit : Les concepteurs du C++ ont décidé que pour surcharger un opérateur, il faut au moins un des arguments de type utilisateur. |
Les sources du cumpilateur sont en C ?
Elles sont où ?
Marsh Posté le 20-12-2002 à 00:15:34
Je comprends pas ta remarque/blague.
Pour surcharger operator+(T,U), il faut que l'un au moins des types T/U soient de ta création.
Marsh Posté le 20-12-2002 à 00:35:46
Musaran a écrit : Je comprends pas ta remarque/blague. |
oui mais pas deux pointeurs sur des types.
Marsh Posté le 04-01-2003 à 00:51:19
puisque + ne le permet pas
passer par une methode externe style "add(const entier*, const entier *)" ca mecontenterait tout le monde?
je le fais pour les vecteurs
(cross product et tout ca)
Bien entendu pour additionner deux entiers c'est
un peu bete mais je crois meme pas que ce soit
possible en java ou en caml de surcharger les operateurs.
LeGreg
Marsh Posté le 05-01-2003 à 12:47:13
ReplyMarsh Posté le 05-01-2003 à 22:45:09
legreg a écrit : puisque + ne le permet pas |
java c'est pas possible (trop le bordel dans les programmes, cf. C++)
caml c'est en discution et ça bataille ferme, des problèmes à la con peuvent survenir (http://www.mail-archive.com/haskell@haskell.org/msg01261.html pour un exemple de problème en haskell)
Marsh Posté le 06-01-2003 à 07:46:27
C++ a le courage d'affronter les problèmes (provoc) .
Les opérateurs utilisateurs, c'est pour quand ?
Marsh Posté le 18-12-2002 à 20:17:09
Pourquoi operator+ peut pas prendre des pointeurs en parametre ?
le operator+ avec un seul parametre le peut lui par contre.
Y a pas moyen ?