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

Why can't I fill this 2D array in C++?

本文关键字:2D 数组 填充 不能 C++ 为什么      更新时间:2023-10-16
    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);
            }
        }
    }

"大小为 8 的写入无效"和"无法将'块*'转换为'块**'

Chunk 构造函数采用两个浮点数(浮点数 x、浮点数 y(。我应该如何填充这个二维数组?

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

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

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

由于类型安全,不能将Chunk*分配给Chunk**

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

数组

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

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

Chunk* chunks[8][8];

Decleration 指针不接受初始化。

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

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

对于转换错误,如果您使用的是结构体或类,我可以建议***,它可以被认为是指针指向的plointer;在您的情况下,2D 数组。