[英]Pass strongly typed enum to function
我有強類型的枚舉。
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);
^
給我無符號字符類型時,為什么總是需要強制轉換CustomCommand枚舉?
C ++類型系統的目的是幫助疲倦的ADHA程序員不要混淆布爾值和褲子。 (或在本例中為CustomCommand和char)
您必須嘗試盡可能長時間傳遞枚舉“對象”,並且僅在使用的最后一點進行轉換。 例如,您可以重載print_byte函數:
void print_byte(CustomCommand cmd)
{
std::cout << static_cast<unsigned char>(cmd);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.