2

我得到错误:表达式必须有一个恒定值。有没有办法实际使用变量,因为我的行可能会随着要读取的每个文件而改变。

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

}

4

2 回答 2

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 .

手动原始内存处理很可能导致错误,如内存泄漏、未定义的行为等。

于 2013-07-14T13:58:01.450 回答
2

您应该动态分配内存,用以下行替换该行

int **row = new int*[rowCount];
于 2013-07-14T13:42:41.293 回答