Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: d00ze13 en 3 Junio 2011, 18:37 PM

Título: funcion de SDL
Publicado por: d00ze13 en 3 Junio 2011, 18:37 PM
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;
}
Título: Re: funcion de SDL
Publicado por: Akai en 3 Junio 2011, 19:51 PM
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
}
Título: Re: funcion de SDL
Publicado por: d00ze13 en 3 Junio 2011, 20:22 PM
puff mil gracias tio!
le hechare un vistazo a los punteros que hace mil que no programo y ya se me olvido un poco.
; )