为什么我不能用C ++填充这个2D数组?

时间:2016-03-30 04:10:12

标签: c++ arrays compiler-errors assign

    Chunk** chunks[8][8];


    World () : Scene () {
        for (int xx = 0; xx < sizeof(this->chunks)-1; xx++) {
            for(int yy = 0; yy < sizeof(this->chunks[xx])-1; yy++) {

                /* Here is where I get compilation errors */
                this->chunks[xx][yy] = new Chunk(0.1f , 0.1f);
            }
        }
    }

&#34;写入大小为8&#34;和&#34;无法将'Chunk *'转换为'Chunk **'

Chunk构造函数需要两个浮点数(float x,float y)。 我该如何填充这个二维数组?

(刚开始学习C ++,之前我写过Java)

3 个答案:

答案 0 :(得分:0)

new Chunk(0.1f, 0.1f)返回了什么?类型为Chunk*的指针。

this->chunks[xx][yy]的类型是什么? 2D阵列中的一个元素,类型为Chunk**

由于类型安全,您无法将Chunk*分配给Chunk**

Chunk** chunks[8][8];更改为Chunk* chunks[8][8];

答案 1 :(得分:0)

chunks[][]数组中的每个项目都有Chunk**类型,但new Chunk()运算符返回指向Chunk(Chunk *)的指针,这就是为什么你无法将'Chunk *'转换为' Chunk **'错误。

要解决此问题,您应该重新声明块:

Chunk* chunks[8][8];

答案 2 :(得分:0)

清除指针不接受初始化。

Chunk * chunk;很好,你可以说chunk = new int [8] [8]或......

例如,指针用法的简单示例: http://www.cplusplus.com/forum/general/9508/

对于转换错误,如果你正在使用struct或class,我可以建议***可以被认为指针pointest一个plointer;在你的情况下是2d数组。