Convertion implicite des paramètres des constructeurs d'une classe.
Bonjour.
Problème dont la réponse doit être toute simple mais que je ne connais pas.
J'ai une classe Color.
Elle possède les constructeurs :
Code:
1 2
| Color(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha = 255);
Color(float red, float green, float blue, float alpha = 1.f); |
Pour le premier constructeur, on s'attend à ce que la couleur soit construite comme ça : Color red(255, 0, 0);
Dans le deuxième, elle est construite comme ça : Color red(1.f, 0.f, 0.f);
Or, dans le premier cas Color red(255, 0, 0), le compilateur ne sais pas quelle constructeur utiliser :
Code:
1 2 3 4
| 1>..\src\ExEngine\Graphics\Color.cpp(17) : error C2668: 'ex::Color::Color' : ambiguous call to overloaded function
1> D:\Excellence\include\ExEngine/Graphics/Color.hpp(15): could be 'ex::Color::Color(float,float,float,float)'
1> D:\Excellence\include\ExEngine/Graphics/Color.hpp(14): or 'ex::Color::Color(sf::Uint8,sf::Uint8,sf::Uint8,sf::Uint8)'
1> while trying to match the argument list '(int, int, int)' |
Quelle solution puis-je utiliser pour que le compilo puisse deviner quel constructeur utiliser, suivant que j'utilise des uchar ou des float?
Je bosse sous Visual Studio 2008