No me acuerdo de lo que hacian "." "->"

Iniciado por anonimo12121, 23 Marzo 2011, 13:19 PM

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

anonimo12121

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:


Código (cpp) [Seleccionar]
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)
Código (cpp) [Seleccionar]


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
Código (cpp) [Seleccionar]
typedef struct {
   Uint8 r:
   Uint8 g;
   Uint8 b;
   Uint8 unused;
} SDL_Color;
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Don Pollo


oxydec

#2
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:

Código (cpp) [Seleccionar]
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:

Código (cpp) [Seleccionar]

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;
};

Akai

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

oxydec

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.

anonimo12121

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.
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746