2014-04-01 27 views
2

是的,這是作業,我的代碼是要求我輸入一個數組,它在輸入數字0時終止,或者當它達到最大整數數ARRAY_SIZE,所以當我輸入我的代碼行array[num_elements]=i;返回一個錯誤,指出Read-only variable is not assignable只讀變量不可分配

void read_list(const int array[], int & num_elements) { 
    int i(1); 

    cout<<"Enter list of "<< ARRAY_SIZE<<" integers (ending with 0)"; 

    while (i != 0 && num_elements < ARRAY_SIZE) { 
     cin >> i; 
     array[num_elements] = i; 
num_elements++; 
    } 

} 
+0

@ xd6_沒有,num_elements不是指針。這個錯誤來自'array'被聲明爲const的事實。 – nos

+3

只需從'array'變量中刪除const限定符。 – newbie

+0

打印的值應該是'ARRAY_SIZE - num_elements - 1'而不是'ARRAY_SIZE'。 –

回答

7

那麼,你的數組的字段是隻讀變量,所以你不能給它們賦值。

刪除const限定符,它應該工作正常。不過,我不確定array[num_elements] = num_elements++是否有用。 也許你想要做array[num_elements++] = i而不是?

1

您正在使用常量引用來訪問數組的元素。您不能使用常量引用來分配這些元素。所以你需要從參數聲明中刪除限定符const。

此外,該函數的代碼是錯誤的。 例如,它初始化num_elements並將0賦給數組的最後一個元素。

功能應該看看下面的方式

int read_list(int array[], int max_size) 
{ 
    int i = 0; 
    int x; 

    std::cout<<"Enter list of no more than " << max_size << " integers (0 - exit): "; 

    while (i < max_size && std::cin >> x && x != 0) 
    { 
     array[i++] = x; 
    } 

    return i; 
} 

它可以被稱爲

int num_elements = read_list(YourArray, ARRAY_SIZE);