使用reinterpret_cast时出现未知错误

时间:2017-12-21 00:02:26

标签: c++ arrays

我有一个二维数组,我将重塑为一个新的二维数组。即,

        int array[3][2];
        int r = 3;
        int c = 2;
        for(int i = 0; i < 3; i++) {
            for(int j = 0; j < 2; j++) {
                array[i][j] = 1;
            }
        }

    int(*array_pointer)[r][c] = reinterpret_cast<int(*)[r][c]>(array);

程序并不完全像这样,但它是主要的。出于某种原因,当我传入ints r和c时,我收到此错误:

cannot initialize a variable of type 'int (*)[r][c]' with an rvalue of type 'int (*)[r][c]'

现在将整数形成为常量或仅将其更改为3和2也可以。但我需要将它们作为整体进行投标,任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

嗯,首先:你不能在转换中使用变量,你需要重写:

int(*array_pointer)[r][c] = reinterpret_cast<int(*)[r][c]>(array);

为:

int(*array_pointer)[3][2] = reinterpret_cast<int(*)[3][2]>(array);

如果您需要使用更灵活或更动态的东西,可以考虑使用std :: vector