2016-03-30 11 views
0
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); 
      } 
     } 
    } 

"Geçersiz büyüklüğü 8 yazma" ve "to '* Dobiş' dönüştürülemiyor 'Chunk **' (şamandıra x, şamandıra y). ben nasıl yapayım Bu 2 boyutlu dizi doldurmak? Neden bu 2D dizisini C++ ile dolduramıyorum? Dobiş yapıcısı iki yüzer alır</p> <p>

(Sadece C++ öğrenmeye başladım, daha önce Java yazdım)

? new Chunk(0.1f, 0.1f) gelen tip Chunk* bir işaretçi döndürülür ne
+1

'*' sembolleri ile dağıtın. 'Sizeof' kullanmayın. Tarz olarak, 'bu->' kullanmayın. Bir std :: vektörü kullanabilirsiniz. Bu işleri basitleştirir. –

+0

Teşekkürler! "Sizeof" dizisinin uzunluğunu döndürdüm ama yanılmışım. Ben onu (chunks)/sizeof (* chunks) ile değiştirdim ve her şey derlendi! –

cevap

0

.

this->chunks[xx][yy]'un türü nedir? 2D dizinizdeki Chunk** türünde bir öğe.

Tip güvenliği nedeniyle Chunk* için Chunk**'a atayamazsınız.

Chunk** chunks[8][8]; değerini Chunk* chunks[8][8]; olarak değiştirin.

+0

Bu, dönüştürme hatasını çözdü, ancak şimdi derlediğimde "Çekirdek bırakıldı". Ve valgrind kullanarak "a.out" dosyasını çalıştırırsam, bir hata yazdırır: "8 numaralı geçersiz yazma" –

0

chunks[][] dizide her öğe Chunk** türü vardır ama new Chunk() operatörü ‘** Chunk’ hata ‘Chunk *’ dönüştüremiyor olsun bu yüzden öbek için (Dobiş *) işaretçi döndürür.

Chunk* chunks[8][8]; 
+0

Bu dönüştürme hatasını çözdü, ancak şimdi derlediğimde "Çekirdek bırakıldı". Ve valgrind kullanarak "a.out" dosyasını çalıştırırsam, bir hata yazdırır: "Geçersiz boyut 8 boyutu" –

+0

Soruna neden olan tam kodu gönderin. Ayrıca xx chunks) olması gerektiği halde xx chunks) -1 koşulunu dizi intializasyonu için kullandığınızı da farkettim. – CodeFuller

0

Deklerasyonu işaretçi doesnt başlatma kabul ediyoruz:

Eğer parçalarını redeclare gerektiğini Bunu düzeltmek için.

Chunk * yığın; Eğer söyleyebiliriz ince olan yığın = new int [8] [8] veya ... Örneğin

, işaretçi kullanımının kolay örnek: dönüşüm hatası için http://www.cplusplus.com/forum/general/9508/

, kullandığınız takdirde yapı veya sınıf, bir işaretçiyi bir plointer işaretçi olarak düşünülebilir ***; Senin durumunda 2d dizisi.