comportement GCC [C++] - C++ - Programmation
Marsh Posté le 27-07-2007 à 18:36:51
Ou alors je pense qu'une option considérant toutes les constantes numériques comme des long fonctionnerait aussi
Marsh Posté le 27-07-2007 à 22:47:03
Bah je veux pouvoir faire autant
maclasse = 2 |
que
maclasse = "y" |
je vois pas comment le faire avec string ?
Et pareil je ne veux pas caster, le but c'est que ça soit transparent pour l'utilisateur
Merci
Marsh Posté le 27-07-2007 à 23:21:36
1) tu ne définis pas des operator= mais des constructeurs
2) tu utilises std::string
je sais pas comment le dire autrement que "utilise std::string"
Marsh Posté le 28-07-2007 à 10:36:58
et si je veux changer la valeur en cours d'execution ? le constructeur ne fonctionnera qu'à l'initialisation
Marsh Posté le 28-07-2007 à 10:41:34
freewol a écrit : et si je veux changer la valeur en cours d'execution ? le constructeur ne fonctionnera qu'à l'initialisation |
c'est que du syntactic sugar, donc tu restes avec tes operator=, et tu caste le zero pour désambigüer ton bousin quand nécéssaire.
Spoiler : const int Zero(0); |
Marsh Posté le 28-07-2007 à 12:12:04
C'est super moche ! Je voudrais un truc user friendly, surtout qu'en pratique il y a déjà plein d'affectation machin = 0 de faites, et ensuite j'ai rajouté la surcharge pour char *, donc ça demanderait de recaster toutes les lignes déjà écrites
Marsh Posté le 28-07-2007 à 12:13:44
mais laisse tomber les char * et prends des std::string on te dit
Marsh Posté le 28-07-2007 à 13:25:14
Bah oui mais je veux pouvoir écrire machin = "y", sans créer une variable intermédiaire
Marsh Posté le 28-07-2007 à 22:30:43
freewol a écrit : Bah oui mais je veux pouvoir écrire machin = "y", sans créer une variable intermédiaire |
si t'as pas les constructeurs qui vont avec, alors ton machin est assez incohérent. On s'amuse à refaire tout le boulot pour les operator= uniquement quand on a un problème de performance. Sinon c'est de la branlette. Un constructeur de conversion c'est le mieux. Laisse ton operator= tranquille
Marsh Posté le 27-07-2007 à 16:43:09
Bonjour,
je ne sais pas si ce que je cherche est possible. J'aimerais pouvoir dire à GCC que s'il trouve un nombre entier, il doit préférer le transtyper en unsigned long plutôt qu'en un pointeur (char * ici)
La raison en est que j'ai une classe qui possède un opérateur "=" surchargé qui prend soit un unsigned long soit un const char * en argument, et si je fais "= 0" ça ne sait pas lequel choisir.
Merci !
Message édité par freewol le 27-07-2007 à 16:44:00