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
#include "func.h"
SDL_Rect *dest=NULL;
dest=tam(dest,100,100,30,30);
func.h
struct SDL_Rect* tam(struct SDL_Rect *fig,int x,int y,int w,int h);
func.cpp
#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;
}
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
}
puff mil gracias tio!
le hechare un vistazo a los punteros que hace mil que no programo y ya se me olvido un poco.
; )