У меня есть следующий тип карты ...
std::map<D3DXCOLOR, ID3DXMesh*>
Во время компиляции xfunctional жалуется, что не может устранить неоднозначность относительно типа ключа;
error C2593: 'operator <' is ambiguous
Операторы-кандидаты, обнаруженные компилятором, следующие:
- встроенный оператор C ++ <(DWORD, DWORD) </li>
- встроенный оператор C ++ <(FLOAT, FLOAT) </li>
- встроенный оператор C ++ <(D3DCOLORVALUE, D3DCOLORVALUE) </li>
Структура D3DXCOLOR состоит из 4 чисел с плавающей запятой r , g , b и a соответственно, но не определяет оператор < , Однако он предоставляет функции приведения для DWORD FLOAT и D3DCOLORVALUE, следовательно, записей в списке кандидатов.
Я обдумываю лучший способ решить эту проблему. Я мог бы написать свой собственный встроенный оператор для D3DXCOLOR, обернуть цвет внутри нового класса, который предоставляет свой собственный оператор <, или можно как-то намекнуть компилятору, какую реализацию следует выбрать из списка кандидатов? Оператор DWORD <удовлетворит мои требования. </p>