簡體   English   中英

我的初始化有什么問題?

[英]What's wrong in my initialization?

這行代碼是我的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

為什么會這樣呢? 我應該如何改變呢? 謝謝

擴展我的評論:

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

(還刪除了一些下划線)

根據編譯錯誤:

 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.

編輯:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM