2010-03-29 26 views
5

Benhatası: başlatıcı

int K[]= new int[Vertices->total]; 

Bunu nasıl çözerim çizgisinde "intitializer fails to determine size of 'K'" hatası alıyorum ‘K’ boyutunu belirlemek için başarısız?

+3

üzerinde bellek ayırır kullanmış olabilir

C ', eğer ikincisi ise,' C99 'kullanıp kullanmadığınız. –

+1

Lousy hata mesajı. Hangi derleyiciyi kullanıyorsunuz? –

+1

@nobugz Aslında, bence bu makul bir hata mesajı. onun çalışma Thankx –

cevap

18

değiştirme

int K[]= new int[Vertices->total]; 

int *K = new int[Vertices->total]; 

1st bir sen K bir tam sayı dizisi için bir referans bir dizi oluşturma Java yöntemdir. Fakat C++ numaralı telefondan, tamsayı türünde K işaretçisini göstermeliyiz.

+0

, Ama Neredeyse diziler – smile

+1

@shiva saklamak için aynı K'yi kullanabilirsiniz. C'deki diziler gerçekten sadece bellek bloklarına işaret eder. 'Aşağıda , sen K her öğe başlatmak zorunda kalacaktır; Eğer tamsayı dizisinin bir dizi işlemek için K kullanmak isteyen, bu yüzden, beyan int K ** = new int * [ ´ – sum1stolemyname

3

new int[Vertices->total] bir işaretçiyi geri döndürmektedir ve bu nedenle, int *K = new int[Vertices->total]; iyi çalışması gerekir. Derleme zamanında Vertices->total boyutunu bilmek (yani SABİT) o zaman int K[Vertices->total]; // Sen `C++` programlama `veya konum karar vermeniz gerekir yığını

İlgili konular