我有强烈的类型枚举。
enum class CustomCommand : unsigned char
{
ENQ = 0x05,
ACK = 0x06,
NAK = 0x15,
};
功能如:
void print_byte(unsigned char byte)
{
cout << "Byte: " << byte << endl;
}
但是当我调用该函数时,GCC会抛出一个错误:
/home/ser/QTProjects/SerialPort/main.cpp:27: error: cannot convert 'CustomCommand' to 'unsigned char' for argument '1' to 'void print_byte(unsigned char)'
print_byte(CustomCommand::ACK);
^
为什么当我给它unsigned char类型时,我总是需要手动转换CustomCommand枚举?
答案 0 :(得分:2)
c ++类型系统的目的是帮助厌倦和ADHA程序员不要混合bool和裤子。 (或者在本例中为CustomCommand和char)
你必须尝试传递enum&#34;对象&#34;尽可能长的时间,并在最后使用点投下。 作为示例,您可以重载print_byte函数:
void print_byte(CustomCommand cmd)
{
std::cout << static_cast<unsigned char>(cmd);
};