У меня есть этот бит кода, который помогает мне преобразовать enum в строку и наоборот.
Итак, я написал макрос, чтобы он выглядел лучше и проще:
#define SMART_REVERT_CASE(__CODE__, __STRING__)\
if (__STRING__ == #__CODE__) return __CODE__
А потом я называю это так:
enum EXAMPLE { HELLO, GOODBYE, ERROR };
EXAMPLE StringToExample(std::string const& input)
{
SMART_REVERT_CASE(HELLO, input);
SMART_REVERT_CASE(GOODBYE, input);
return ERROR;
}
К сожалению, он не компилируется (в VS 2008):
Error 1 error C2666: 'operator ==' : 5 overloads have similar conversions
Есть ли способ дать подсказку компилятору относительно того, какой оператор == использовать?