Что не так в моей инициализации?

Эти строки кода являются частью моего определения функции оптимизации библиотеки 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

Почему это так?
Как я должен изменить это?
Спасибо

1

Решение

Расширяя мой комментарий:

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);

(также удаляя лишние подчеркивания)

3

Другие решения

По ошибкам компиляции:

 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.

РЕДАКТИРОВАТЬ:

2