簡體   English   中英

為什么我不能在C ++中填充此2D數組?

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

    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 *'轉換為'Chunk **'

Chunk構造函數采用兩個浮點數(float x,float 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 **'的原因。

要解決此問題,您應該重新聲明塊:

Chunk* chunks[8][8];

聲明指針不接受初始化。

塊* 可以的,您可以說chunk = new int [8] [8]或...

例如,簡單的指針用法示例: http : //www.cplusplus.com/forum/general/9508/

對於轉換錯誤,如果您使用的是struct或class,我建議您將***視為指針指向plointer; 在您的情況下,二維數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM