Permalänk

pointer array / pekar listor

Jag vill göra en pekar array med SDL_Surface.
Men det värkar inte att gå riktigt.

Jag har tänk att ha flera bild remsor som mitt program/spel ska använda.

#define NR_OF_SPRITE_STRIPS 4

SDL_Surface **sprite_strips;

sprite_strips = (SDL_Surface **)
malloc(sizeof(SDL_Surface *) * NR_OF_SPRITE_STRIPS);

Jag ska allocera minne till den så att jag får en lista med adresser till självaste bilderna.

for (short i = 0; i < NR_OF_SPRITE_STRIPS; i++, sprite_strips++)
{
*sprite_strips = SDL_Load_BMP("bild.bmp");
}

Det borde gå, men jag får 102 errors.
Det är ett väldigt bra sätt att programmera på, men det går visst inte.

Permalänk
Medlem

Det där borde väl gå. Men du kan väl inte deklarera variabeln "i" i loopen i C. Gör det precis efter sprite_strips-deklarationen istället.

Visa signatur

//cykze

Permalänk

extern

Det var en extern variabel det var nåt konstigt med.

--------------Sprite.cpp---------------------------------------------
#include "Sprite.h"
#define NR_OF_SPRITE_STRIPS 4

SDL_Surface **sprite_strips;

sprite_strips = (SDL_Surface **)
malloc(sizeof(SDL_Surface *) * NR_OF_SPRITE_STRIPS);

short i;
for (i = 0; i < NR_OF_SPRITE_STRIPS; i++, sprite_strips++)
{
*sprite_strips = SDL_LoadBMP("bild.bmp");
}
--------------------------------------------------------------------------

I Sprite.cpp blev det inga errors, det compilerade bra.

--------------Sprite.h------------------------------------------------

extern SDL_Surface **sprite_strips; // felet sitter här
------------------------------------------------------------------------

Men i Sprite.h externa variabel blev det 102 errors.

Permalänk
Medlem

Jadu, om jag förstår dig rätt så ...

#define NR_OF_SPRITE_STRIPS 4

SDL_Surface *sprite_strips[NR_OF_SPRITE_STRIPS];

for (short i = 0; i < NR_OF_SPRITE_STRIPS; i++)
{
sprite_strips[i] = new SDL_Surface;
sprite_strips[i] = SDL_Load_BMP("bild.bmp");
}

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Medlem

Re: extern

Citat:

Ursprungligen inskrivet av programering
Det var en extern variabel det var nåt konstigt med.

--------------Sprite.cpp---------------------------------------------
#include "Sprite.h"
#define NR_OF_SPRITE_STRIPS 4

SDL_Surface **sprite_strips;

sprite_strips = (SDL_Surface **)
malloc(sizeof(SDL_Surface *) * NR_OF_SPRITE_STRIPS);

short i;
for (i = 0; i < NR_OF_SPRITE_STRIPS; i++, sprite_strips++)
{
*sprite_strips = SDL_LoadBMP("bild.bmp");
}
--------------------------------------------------------------------------

I Sprite.cpp blev det inga errors, det compilerade bra.

--------------Sprite.h------------------------------------------------

extern SDL_Surface **sprite_strips; // felet sitter här
------------------------------------------------------------------------

Men i Sprite.h externa variabel blev det 102 errors.

Sprite.cpp ser väl inte ut precis så där i verkligheten? Jag antar att det du har skrivit ligger i funktioner/metoder, eller?

Öka inte pekaren "sprite_strips" så där i for-loopen, då vet du ju inte vad du ska frigöra för minne sen. Skapa en temporär pekare som pekar på sprite_strips om du nu vill göra så här. Men det är möjligt att det kanske går lite snabbare med pekare än att använda index. (Eller kanske inte?)

Men när du nu vet i förväg hur många sprite-stripes det ska vara så är det ju lättare att göra som Knarken föreslår.

Vad får du för fel?

Visa signatur

//cykze

Permalänk
Medlem

Saken är den att han vet hur många sprite-strips han ska ha, annars fattar jag inte varför man skapar en konstant vid detta namn: #define NR_OF_SPRITE_STRIPS 4

Cheers!

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Medlem

Precis. Och det var precis därför jag ju skrev "Men när du nu vet i förväg hur många sprite-stripes det ska vara så är det ju lättare att göra som Knarken föreslår." i mitt inlägg.

Visa signatur

//cykze