Salut � vous !
J'explique mon probl�me :
Je travaille en ce moment � cr�er des classes alternatives pour les types de donn�e de base (int, float, ...).
Le soucis c'est que je n'arrive pas � dompter le compilo...
Exemple, si j'�cris :
... h� bien le compilateur me dis qu'il y a "ambigous overload" entre :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 s_uint i = 15u; s_float f = i/10.0f;
Les seuls constructeurs qui peuvent servir dans ce cas sont :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 s_uint s_uint::operator/ (s_uint) et s_float s_uint::operator/ (s_float)
Le compilateur � donc deux options :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 s_uint(unsigned int uiValue); s_uint(s_float fValue); et s_float(float fValue); s_float(s_uint uiValue);
10.0f -> s_float(10.0f) -> operator/ (s_float)
10u -> s_uint(10u) -> operator/ (s_uint)
Mon 10.0f se trouve miraculeusement transform� en entier. Y a-t-il un moyen d'emp�cher �a ? Je peux comprendre qu'un entier puisse �tre transform� en float automatiquement, mais l�...
Autre soucis :
J'ai cr�� une classe dans le m�me style pour g�rer les chaines de caract�res (bas�e sur std::string), et j'ai des erreurs de compilation que je n'avais pas avec std::string :
... me donne :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 s_str s1 = "ça"; s_str s2 = "salut " + s1 + " va ?";
J'imagine qu'il cherche un "operator+ (s_str)" pour const char*, ce qui biens�r n'existe pas. Or, avec std::string : pas de probl�me. Comment font-ils ?error: no match for 'operator+' in '"salut " + s1'
Merci d'avance pour vos r�ponses !
Partager