funcion de SDL

Iniciado por d00ze13, 3 Junio 2011, 18:37 PM

0 Miembros y 1 Visitante están viendo este tema.

d00ze13

Hola buenas estoy intentando hacer una funcion en SDL para pasarle los puntos donde quiero que se dibuje una imagen pero no consigo que me funcione. a ver si me pudierais hechar una mano.

main.cpp
Código (cpp) [Seleccionar]

#include "func.h"
SDL_Rect *dest=NULL;
dest=tam(dest,100,100,30,30);


func.h
Código (cpp) [Seleccionar]

struct SDL_Rect* tam(struct SDL_Rect *fig,int x,int y,int w,int h);


func.cpp
Código (cpp) [Seleccionar]

#include "func.h"
struct SDL_Rect* tam(struct SDL_Rect *fig,int a,int b,int c,int d){
    fig->x=a;
    fig->y=b;
    fig->w=c;
    fig->h=d;

    return fig;
}

Akai

Dos cosas:

NO puedes tener código ejecutable FUERA de una función tal como lo expresas en tu main.cpp

dest=tam(dest,100,100,30,30);
Eso tiene que estar en una función si o si, bien sea main o la que sea, pero NUNCA suelto.

Por otro lado, espero que no lo estés haciendo tal cual lo pones, porque sino obviamente, dest no apunta a nada, y la función no crea ningún punto para que dest lo reciba.

Deberías mirarte la teoría de punteros, y antes de empezar a usar la SDL entender qué haces.

Opciones?


struct SDL_Rect* tam(struct SDL_Rect *fig,int a,int b,int c,int d){
fig=(fig*) malloc(sizeof(struct SDL_Rect));
if(fig!=NULL){
fig->x=a;
fig->y=b;
fig->w=c;
fig->h=d;
}
else {
// estás jodido
}
    return fig; // tanto da si apunta a algo como si apunta a null, tu función devuelve un puntero
}


o bien


SDL_Rect *dest=NULL;
dest=(struct SDL:Rect*)malloc(sizeof(struct SDL_Rect));
if(dest!=NULL){
dest=tam(dest,100,100,30,30); // el dest= sobraría. Al fin y al cabo qué sentido tiene recibir el
//mismo puntero que le pasas?
}
else {
// estás jodido
}

d00ze13

puff mil gracias tio!
le hechare un vistazo a los punteros que hace mil que no programo y ya se me olvido un poco.
; )