Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: anonimo12121 en 23 Marzo 2011, 13:19 PM

Título: No me acuerdo de lo que hacian "." "->"
Publicado por: anonimo12121 en 23 Marzo 2011, 13:19 PM
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;
Título: Re: No me acuerdo de lo que hacian "." "->"
Publicado por: Don Pollo en 23 Marzo 2011, 15:39 PM
Pero qué es ct?
Título: Re: No me acuerdo de lo que hacian "." "->"
Publicado por: oxydec en 23 Marzo 2011, 15:47 PM
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;
};
Título: Re: No me acuerdo de lo que hacian "." "->"
Publicado por: Akai en 23 Marzo 2011, 15:50 PM
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
Título: Re: No me acuerdo de lo que hacian "." "->"
Publicado por: oxydec en 23 Marzo 2011, 15:58 PM
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.
Título: Re: No me acuerdo de lo que hacian "." "->"
Publicado por: anonimo12121 en 23 Marzo 2011, 16:31 PM
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.