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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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