我的研究还没有给出答案(在 SOF 中),但我确信之前一定有人问过这个问题,如果是这样,我很抱歉。
我在 C++ 中创建了一个枚举类型,然后我从消息头中读取了一个值,并希望将其存储到我的枚举类型的变量中,例如:
// My defined enum type
enum myNumType_t
{
MY_NUM_UNKNOWN = 0,
MY_NUM1 = 1,
MY_NUM2 = 2,
MY_NUM3 = 3,
MY_NUM4 = 4,
MY_NUM5 = 5,
};
// In the code
int main()
{
myNum_t myNum = MY_NUM_UNKNOWN;
myNum = getMessageNumType(); // returns an int
return 0;
}
所以,这段代码不能在 c++ 中编译,因为它不能将 int 转换为 myNum_t,这很公平。因此,如果我将其myNum = (myNum_t) getMessageNumType();
转换为现在当然可以编译。但它做正确的事吗?如果返回值超出 myNum_t 的范围会怎样?我在这里缺少“最佳实践”吗?