Problem mit Pointern
-
ich habe ein komplexeres Programm, das eigentlich funktioniert. Nun scheitere ich aber daran, einen Pointerarray an eine Funktion zu übergeben. Folgender Code gibt keinen Compilerfehler, funktioniert aber nur beim arrayelement 0, dahinter kommt schmarrn.
Bitte hilft mir wer bei den & * ** [] usw Dingern, bitte!!!//DEFINITION der Klasse CTexture class CTexture { public: LPDIRECTDRAWSURFACE4 Surface; LPDIRECT3DTEXTURE2 Texture; int Width, Height; CTexture(); ~CTexture(); }; // Deklaration meines Pointer arrays CTexture *SampleTexture[1000]; // So rufe ich meine Funktion auf i=myfunction(*SampleTexture); // und so sieht die Funktion aus void myfunction(CTexture *itexture) { int nr; int xd; nr=2; //wenn nr=0 ist fuktionierts, sonst Absturz, Unsinn xd = itexture[nr].Width; }
-
Du hast ein Array mit 1000 Pointern auf CTexture (die Pointer stehen ordentlich hintereinander, die verpointerten Objekte stehen irgendwo im Speicher) und übergibst einen dieser Pointer an deine Funktion. D.h. entweder mußt du ein Array von Objekten anlegen (die stehen dann hintereinander) oder du übergibst das komplette Array:
//a: CTexture Samples[1000]; myFunction(Samples); //b: CTexture* Samples[1000]; myFunction(Samples); void myFunction(CTexture*tex[]) { ... xd=tex[nr]->Width; }
-
vielen vielen Dank.
genau so funktioniert es bestens.Ich verspreche, dass ich versuchen werde dahinterzusteigen, warum es so geht
der vollständigkeit halber die Definiton lautet:
//a:
CTexture *Samples[1000];