我想声明两个数组,一个2D和一个1D。我知道维度需要是常量值。所以const值是从函数调用的返回值中分配的。这很好,但是当我使用派生值来声明数组时,COMPILE错误!为什么???定义一个常量/声明一个数组
这里是我的代码:
int populateMatrixFromFile(string fname) {
std::ifstream fileIn;
int s = determineDimensions(fname); // return value (CONST INT)
const int size = s; // assign to const
cout << "Value returned from determineDimensions(): " << size << endl;
if (size > 10){
cout << "Maximum dimensions for array is 10 rows and 10 columns. Exiting" << endl;
return 1;
}
fileIn.open(fname.c_str(), ios::in); //opened for reading only.
float aMatrix[size][size]; // ERROR
float bMatrix[size]; // ERROR
,但它在这里工作:
// assign the pth row of aMatrix to temp
const int alen = sizeof (aMatrix[p])/sizeof (float);
float temp[alen]; // WORKS!!!
for (size_t i = 0; i < alen; i++) {
temp[i] = aMatrix[p][i];
}
感谢所有帮助。
你*应该*使用'std :: vector'。 – chris 2012-07-17 15:55:00
@chris当然,这是另一种选择,只要没有其他约束,例如这是一个不允许使用std :: vector的教室任务。 – 2012-07-17 16:01:56