error: ‘變數名‘ does not name a type|

鉻金屬發表於2020-10-25

寫了個標頭檔案
程式碼大概這樣

int *tasks;
int *nodes;
//初始化任務集合
mt19937 rng;
tasks=new int[taskNum];
for(int aa=0;aa<taskNum;aa++){
    std::uniform_int_distribution<int> dis1(10,100);
    tasks[aa]=dis1(rng);
}
nodes=new int[nodeNum];
for(int i=0;i<nodeNum;i++){
    std::uniform_int_distribution<int> dis1(10,100);
    nodes[i]=dis1(rng);
}

其中tasks、aa、nodes、i這些變數都報錯。
在這裡插入圖片描述
後來看文章給出的解釋,說main函式外不能這樣賦值?具體原因也不明白,解決辦法就是將這塊程式碼寫進某個函式中。
像這樣

void initialTasksAndNodes() {
    mt19937 rng;
    //初始化任務集合
    tasks=new int[taskNum];
    for(int aa=0; aa<taskNum; aa++) {
        std::uniform_int_distribution<int> dis1(10,100);
        tasks[aa]=dis1(rng);
    }
    nodes=new int[nodeNum];
    for(int i=0; i<nodeNum; i++) {
        std::uniform_int_distribution<int> dis1(10,100);
        nodes[i]=dis1(rng);
    }
}

這個錯就不報了。

相關文章