Как я могу разрешить неоднозначный вызов между этими двумя в C ++?
Color(int, int, int)
Color(float, float, float)
Это неоднозначно, когда значения жестко закодированы, т.е. Color(1, 2, 3)
и когда они являются переменными Color(r, g, b)
. Почему компилятор не разрешает в соответствии с типом данных? В переменной форме?
EDIT:
Извините, слишком много C ++ заставляет меня забыть, что есть другие языки.
И не так уж много «полного кода», который был об этом.
float x, y, z;
int r, g, b;
Color(1, 2, 3); // ambiguous
Color(1.0, 2.0, 3.0); // ambiguous
Color(r, g, b); // ambiguous <--- this one is a real pain
Color((int)r, (int)g, (int)b); // ambiguous
Color(x, y, z); //OK
Color(1u, 2u, 3u); //OK
Color(1.0f, 2.0f, 3.0f); //OK