我想聲明兩個數組,一個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