error C2057: 应输入常量表达式
error C2466: 不能分配常量大小为 0 的数组
error C2087: “RefFrmPrjPatch_x”: 缺少下标
如下则会产生以上错误:
const int nPatch = 4;
const int CurtPatchWidth = 200; // 当前帧图像块宽度
const int MovePatchW = (int)(cos(1.5)+10);
const int PrevPatchWidth= MovePatchW; // 参考帧(前一帧)图像块宽度
int RefFrmPrjPatch_x[4][PrevPatchWidth] ={0};
修改第三句则没有错误:const int MovePatchW = 5+10;
注:观测可知,第一种情况MovePatchW、PrevPatchWidth仍为常变量,只是采用函数表达式赋值,可能这个常变量不被数组接受为常量,结果不能作为数组下标;
第二种情况二者也为常变量,采用数值赋值,常变量等价于常量,就可以给数组赋值。
PS:这是我和同学实验了好久得出的结论,不知正确否,留待参考吧!