簡體   English   中英

將強類型枚舉傳遞給函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM