二维数组中数组下标的无效类型'int [int]'

时间:2017-10-13 18:47:22

标签: c++ arrays multidimensional-array

处理从文件中读取整数并将它们放入2D数组的项目。我用一维数组测试了它,但是当我用二维数组进行测试时,我一直得到这个错误"数组下标的无效类型'int [int]'"在我的课堂上叫做#34; Image"在这个功能:

void Image::read(int* arr)
{
//Nested loop that reads the file
    for(int i = 0; i < height; i++)
    {
        for(int k = 0; k < width; k++)
        {
            inputFile >> arr[i][k]; //Here's where I get the error
        }
    }
}

这是我的主要功能:

int main()
{
    Image test("colorado1.dat"); //File with the integers

    test.setWidth(500);
    test.setHeight(500);

    int array[test.getHeight()][test.getWidth()];

    test.read(array);
    //Loop to test if the function worked
    for(int i = 0; i < 500; i++)
    {
        for(int k = 0; k < 500; k++)
        {
            cout << array[i][k] << " ";
        }
    }
}

1 个答案:

答案 0 :(得分:0)

看一下这个函数签名:

void Image::read(int* arr);

在这里,您已经说过arr的类型是int*,一个指向整数的指针。结果,当你写

arr[i][k]

C ++说&#34;等一下...... arrint *,所以arr[i]int,你不能将方括号运算符应用于一对int值。&#34;

要解决此问题,您需要更改处理此功能的参数的方式。您可以传入int**,它代表指向int的指针,或者考虑使用std::vector<std::vector<int>>之类的东西,这样更安全,更容易使用。