我得到了错误:表达必须具有常数值。有没有办法实际使用变量,因为我的行可能会随着每个要读取的文件而改变。
Image readFile(string fileName) {
ifstream file;
file.open(fileName);
int row;
int column;
Image image(0, 0);
if(file.is_open()){
file >> row;
file >> column;
}
int **row[row]; // error right here!!!!!!!!!!!!!!!!!!!!!!!!! ERROR:EXPRESSION MUST HAVE A CONSTANT VALUE
file.close();
image(row, column);
return image(row, column);
}
答案 0 :(得分:4)
如果我可以给你一个建议:在这种情况下不要使用原始内存。坚持使用RAII并使用容器获取2d数据。
std::vector<std::vector<int>> data;
如果你以某种方式关注性能,请看看这个答案,关于为什么要使用连续存储:Why is dynamic 2 dimensional data storage (pointer-to-pointer or vector-of-vector) "bad" for simple 2d storage。
手动原始内存处理很可能导致内存泄漏,未定义的行为等错误。
答案 1 :(得分:2)
您应该动态分配内存,用以下行替换该行
int **row = new int*[rowCount];