只读变量不可分配

时间:2014-04-01 14:30:36

标签: c++

是的,这是用于家庭作业,我的代码要求我输入一个数字,在输入数字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++;
    }

}

2 个答案:

答案 0 :(得分:8)

嗯,您的数组的字段是只读变量,因此您无法为它们赋值。

删除const限定符,它应该可以正常工作。

我不确定array[num_elements] = num_elements++是否有用。 也许你想改为array[num_elements++] = i

答案 1 :(得分: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 );