C ++在创建指针时如何使用变量作为指针的大小?

时间:2013-07-14 13:30:49

标签: c++ variables pointers

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

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

}

2 个答案:

答案 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];