问题描述
我正在使用旧代码,在使用较新的 C++ 标准进行编译时,我在每个 -1
处都会出错。
constant expression evaluates to -1 which cannot be narrowed to type 'char' [-Wc++11-narrowing]
这是代码片段
typedef struct {
//short len;
//unsigned short cw;
char x,y,v,w;
} testStruct;
const testStruct testArr[] = {
{ 1,-1,0},{ -1,1,{ 0,1},-1},{ 1,-1}
};
我尝试将代码和括号更改为 warning: narrowing conversion C++11 后面的括号,但我仍然遇到相同的错误。有没有不恢复到旧 C++ 标准的解决方案?
解决方法
要覆盖编译器,您必须编写 static_cast<char>(-1)
有些事情在较新的 C++ 标准中不再被接受,因此您必须找到一种更现代的方式来做事...