elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Acceso a mienbros no estaticos de clase a traves de estaticos en: 24 Septiembre 2014, 16:25 pm
Hola amigos, me ha surgido una gran duda y quería compartirla para ver si alguien que la tenga clara me puede abrir el horizonte. Resulta que estoy trabajando con un framework para realizar juegos, y he visto que ocupan mucho lo que voy a explicar a continuación, que por lo visto es valido porque compila sin problemas y además anda bien y me esta funcionando, sin mas preámbulos paso a explicar mi duda.
Tengo una clase llamémosla X , que hereda de la clase que la vamos a llamar Y, resulta que la clase X tiene un método estatico, y mi duda es la siguiente: por medio de ese método estatico pueden acceder a cualquiera de los métodos no estáticos de las dos clases e invocarlos. Lo pongo con código para que se entienda mejor, no entiendo como es esto posible. Como ese método estatico permite apuntar e invocar a cualquier método no estatico de las clases.

Código
  1. #ifndef __CC_EGLVIEW_ANDROID_H__
  2. #define __CC_EGLVIEW_ANDROID_H__
  3.  
  4. #include "cocoa/CCGeometry.h"
  5. #include "platform/CCEGLViewProtocol.h"
  6.  
  7. NS_CC_BEGIN
  8.  
  9. class CC_DLL CCEGLView : public CCEGLViewProtocol
  10. {
  11. public:
  12.    CCEGLView();
  13.    virtual ~CCEGLView();
  14.  
  15.    bool    isOpenGLReady();
  16.  
  17.    // keep compatible
  18.    void    end();
  19.    void    swapBuffers();
  20.    void    setIMEKeyboardState(bool bOpen);
  21.  
  22.    // static function
  23.    /**
  24.     @brief    get the shared main open gl window
  25.     */
  26.    static CCEGLView* sharedOpenGLView(); METODO ESTATICO
  27. };
  28.  
  29. NS_CC_END
  30.  
  31. #endif    // end of __CC_EGLVIEW_ANDROID_H__


Y HACEN COSAS COMO ESTAS CON ESTE METODO ESTATICO

Código
  1. CCEGLView::sharedOpenGLView()->setDesignResolutionSize(designSize.width, designSize.height, kResolutionShowAll);

EN DONDE  EL METODO setDesignResolutionSize() ES UN METODO NO ESTATICO DE LA CLASE BASE CCEGLViewProtocol. NO ENTIENDO COMO SE APUNTA . CCEGLViewProtocol es la clase base y  tiene el método setDesignResolutionSize que lo puedo invocar por medio de un método estatico de la clase derivada CCEGLView.
Bueno espero q me tiren un salvavidas asi puedo entender mejor lo que esta sucediendo. Gracias Javier.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines