这行代码是我的c ++ cplex库优化函数定义的一部分。
IloArray<IloArray<IloExpr> > weightedSumBR = IloArray<IloArray<IloExpr> >(env, r);
for(int i=0; i<r; i++) {
weightedSumBR[i] = IloArray<IloExpr>(env, r);
for(int j=0; j<color; j++) {
for(int k=i*n; k<(i+1)*n; k++) {
for(int l=0; l<N; l++) {
weightedSumBR[i][j] += m[k][l]*x[k][l][j];
}
}
}
}
IloArray<IloArray<IloRange> > range_weightedSumBR(env, r);
for(int i=0; i<r; i++) {
IloArray<IloRange> range_weightedSumBR[i] = IloArray<IloRange>(env, r);
for(int j=0; j<color; j++) {
IloRange range_weightedSum_BR[i][j] = IloRange(env, 0, weightedSum_BR[i][j], addupto);
}
}
但是我收到以下错误:
g.cpp:120:78: error: variable-sized object ‘range_weightedSumBR’ may not be initialized
g.cpp:122:68: error: ‘weightedSum_BR’ was not declared in this scope
g.cpp:122:97: error: variable-sized object ‘range_weightedSum_BR’ may not be initialized
为什么会这样? 我应该怎么改变这个? 谢谢
答案 0 :(得分:3)
扩展我的评论:
IloArray<IloRange> range_weightedSumBR[i] = IloArray<IloRange>(env, r);
看起来像是在尝试声明一个数组(它会隐藏在外部作用域声明的range_weightedSumBR。
同样适用于
IloRange range_weightedSum_BR[i][j] = IloRange(env, 0, weightedSum_BR[i][j], addupto);
我认为你的意思是那些
range_weightedSumBR[i] = IloArray<IloRange>(env, r);
和
range_weightedSumBR[i][j] = IloRange(env, 0, weightedSumBR[i][j], addupto);
(同时删除一些额外的下划线)
答案 1 :(得分:2)
根据编译错误:
IloArray<IloRange> range_weightedSumBR[i] = IloArray<IloRange>(env, r);
看起来很奇怪,IloArray<IloRange>
似乎多余。
与此同时:
weightedSum_BR
应该是
weightedSumBR //you may have typos in your code on variable names
和
range_weightedSum_BR
应该是
range_weightedSumBR.
编辑: