2016-04-11 26 views
0

SDL_mixer adlı biraz belirsiz bir ses kitaplığı kullanıyorum. GCC, bir işaretçi yapısını bildirme konusunda bana şikayet ediyor? Neyi yanlış yapıyorum?İşaretçi yapılarını neden bildiremiyorum?

Mix_Music **music; // music[2] must be a pointer to fit any random file 
music = new Mix_Music[3]; 
music[2] = Mix_LoadMUS("fire.ogg"); 

GCC döner:

 ||=== Build file: "no target" in "no project" (compiler: unknown) ===| 
    xxx.cpp||In function 'int SDL_main(int, char**)':| 
    xxx.cpp|28|error: invalid use of incomplete type 'Mix_Music {aka struct _Mix_Music}'| 
    SDL_mixer.h|131|error: forward declaration of 'Mix_Music {aka struct _Mix_Music}'| 
    ||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===| 

düzenleme: dosyaların binlerce yüklenen olabilir, dinamik olarak, tahsis edilecek yapı gerekir. Yığın bellek yapmayacak. new Mix_Music[3] içinde derleyici, her bir nesnenin ne kadar alan tahsis edeceğini bilmek için ne kadar büyük olduğunu bilmesi gerekir.

+0

'Mix_Music * music [3]; müzik [2] = Mix_LoadMUS ("fire.ogg"); ' – user657267

+0

Tipik yığın bir megabayttır. Bu 128k işaretçiler. –

+0

SDL_mixer'ı "belirsiz" olarak tanımlamıyorum! –

cevap

1

İleri bir beyan, bu bilgiyi vermez.

Muhtemelen new Mix_Music*[3]. Yığın tahsisi çalışabilir ve std::array veya std::vector işleri daha iyi hale getirebilir.

+0

O zaman ne yapmaya çalıştığımı nasıl başarabilirim? – TrueTypePhantom

+0

Ek paragrafa bakın. –

+0

Tamam. Ben yığınları deneyeceğim. Yakında güncellenecek. – TrueTypePhantom

İlgili konular