[C++] comportement GCC

comportement GCC [C++] - C++ - Programmation

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
Reply

Marsh Posté le 27-07-2007 à 16:43:09   

Reply

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

Reply

Marsh Posté le 27-07-2007 à 19:58:17    

Et en castant ?


---------------
Töp of the plöp
Reply

Marsh Posté le 27-07-2007 à 21:43:10    

utilise std::string et c'est réglé

Reply

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

Reply

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"

Reply

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 :p

Reply

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 :p


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


Message édité par schnapsmann le 28-07-2007 à 10:48:07
Reply

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 :o

Reply

Marsh Posté le 28-07-2007 à 12:13:44    

mais laisse tomber les char * et prends des std::string on te dit :o

Reply

Marsh Posté le 28-07-2007 à 12:13:44   

Reply

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 :p

Reply

Marsh Posté le 28-07-2007 à 13:47:42    

J'vois pas ce qui t'en empêche avec des std::string.

Reply

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 :p


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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed