Hola es que no me acuerdo donde lo leí lo que hacía "." y "->" se que era algo de clases y punteros. Pero no me acuerdo xDD.
Podría ser que "->" se use acceder a un miembro de una clase puntero. Y "." para acceder al miembro de una clase "normal".
Por ejemplo:
typedef struct {
Uint32 flags;
SDL_PixelFormat *format;
int w;
int h;
Uint16 pitch;
void *pixels;
SDL_Rect clip_rect;
int refcount;
} SDL_Surface;
int w;
SDL_Surface *imagen;
w=imagen->w;
//en caso de ser
SDL_Surface imagen;
w=imagen.w;
Saludos
Edito:
Ya que estamos XD.
Me da este error `ct' undeclared (first use this function)
class sprite{
private:
SDL_Surface *imagen;//imagen
SDL_Rect pos;//posicion de la imagen
SDL_Color ct;//color predeterminado verde
public:
sprite();//constructor para asginar valores a las variables
void carga_imagen(char *name);//carga una imagen con el nombre indicado
void colorkey(int r,int g,int b);//para cambiar el color transparente si uno quiere por defecto e puesto que sea el verde
void ver_sprite(SDL_Surface &scr);//para copiar la imagen a la pantalla.
};
sprite::sprite(){
ct.r=0;
ct.g=255;
ct.b=0;
};
void sprite::carga_imagen(char *name){
imagen=SDL_LoadBMP(name);
pos.w=imagen->w;
pos.h=imagen->h;
SDL_SetColorKey(imagen,SDL_SRCCOLORKEY,SDL_MapRGB(imagen->format,ct.r,ct.g,ct.b));
};
void colorkey(int r,int g,int b){
ct.r=r;// aqui me dice `ct' undeclared (first use this function)
ct.g=g;
ct.b=b;
};
void sprite::ver_sprite(SDL_Surface &scr){
SDL_BlitSurface(imagen,0,&scr,&pos);
};code]
Por cierto
typedef struct {
Uint8 r:
Uint8 g;
Uint8 b;
Uint8 unused;
} SDL_Color;
Pero qué es ct?
Es exactamente es lo que dices:
"." se usa para acceder a los miembros de una clase/struct
"->" se usa para acceder a los miembros de una clase/struct a traves de un puntero
Sobre el error de ct creo que:
void colorkey(int r,int g,int b){
ct.r=r;// aqui me dice `ct' undeclared (first use this function)
ct.g=g;
ct.b=b;
};
deberia ser:
void sprite::colorkey(int r,int g,int b){ // falta decirle a que clase pertenece sino no encuentra ct
ct.r=r;// ahora ct ya esta declarado
ct.g=g;
ct.b=b;
};
Tal como te han dicho ya, el operador . se utiliza para acceder al campo de una clase / estructura. el operador -> no es más que la abreviatura de " (*puntero). ", es decir, de lo apuntado por puntero, el campo después del punto.
Y como ya te ha dicho oxydec, Si colorkey es un miembro de la clase sprite, su implementación debe llevar el nombre de la clase a la cual pertenece.
PD: contestó mientras escribía el mensaje, así que lo he adecuado un poco
Cita de: Akai en 23 Marzo 2011, 15:50 PM
PD: contestó mientras escribía el mensaje, así que lo he adecuado un poco
xD Mientras escribia tenia el presentimiento de que si no posteaba rapido la respuesta llegaria tarde.
Jaja
Gracias sois los mejores XDD
sprite:: "típico fallo de sintasix XDD"
No sé, si os pasara a veces que no encontráis un fallo tonto como este. XDD
Cita de: Don Pollo en 23 Marzo 2011, 15:39 PM
Pero qué es ct?
Es una estructura se puede ver más abajo que lo he puesto.