clang++ 抱怨变量未初始化:
template<typename TEnum> void func() {
TEnum enumVar;
// ...
if(something()) enumVar = someValue();
// ...
if(something()) doSomethingWith(enumVar); // <- clang++ tells me
// enumVar may be uninitialized
}
通常,为避免出现此警告,枚举可以具有
Unknown = -1
值或类似的值-但不幸的是,此处枚举类型由用户作为typename TEnum
传递,因此我不知道它是否包含“空值”。有什么办法解决这个问题?还是我应该忽略/禁止该警告?
最佳答案
您可以初始化枚举:
template<typename TEnum> void func() {
TEnum enumVar = TEnum();
// TEnum enumVar {}; // C++11 way
// ...
if(something()) enumVar = someValue();
// ...
if(something()) doSomethingWith(enumVar);
}
请注意,该枚举的值
0
可能是无效值。