Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: eleon en 13 Julio 2012, 11:16 am



Título: Pasar una clase a otra
Publicado por: eleon en 13 Julio 2012, 11:16 am
Buenas:

Bien sabemos que en C se puede hacer lo siguiente:

Código
  1. typedef struct {
  2. int x;
  3. int y;
  4. } Estructura1;
  5.  
  6. int main ()
  7. {
  8. Estructura1 *puntero = malloc (Estructura1);
  9. void* puntero_void = puntero; //El puntero void puede apuntar a la misma dirección que cualquier otro puntero
  10. puntero = puntero_void; //Y viceversa. Un puntero de un tipo puede apuntar a la misma dirección que un puntero void. Pero al hacer esto lo que conseguimos es darle una estructura a esa zona de memoria
  11.  
  12. return 0;
  13. }

Bien, ese último punto no consigo simularlo en C++, no consigo hacer que un puntero de tipo "Clase1" apunte a la misma dirección que un puntero de tipo "void".

¿Alguna idea?.

Saludos.


Título: Re: Pasar una clase a otra
Publicado por: BlackZeroX en 13 Julio 2012, 11:36 am
.
En C++ se usa...

Código
  1.  
  2. class hola
  3. {
  4.    public:
  5.        //hola();
  6.        //virtual ~hola() = 0;
  7.    protected:
  8.    private:
  9. };
  10.  
  11. int main() {
  12.    hola clase;
  13.    void *ptr = static_cast<void*>(&clase); // caso Normal (cuando marque error usar el caso extremo).
  14.    //void *ptr = reinterpret_cast<void*>(&clase); // caso Extremo (Tener cuidado al usar).
  15.    return 0;
  16. }
  17.  
  18.  

Dulces Lunas!¡.


Título: Re: Pasar una clase a otra
Publicado por: eleon en 13 Julio 2012, 12:19 pm
Muchas gracias, funciona a la perfección.

Me gustaría preguntarte acerca de más instrucciones de ese tipo aunque no tengan que ver con las clases, es decir, quisiera informarme sobre instrucciones como esa que son poco comunes de ver. Si no hay una recopilación de tal cosa, ¿conoces alguna lista donde aparezcan todas las instrucciones que componen las librerías estándar de C++?.

Gracias de nuevo. Saludos.


Título: Re: Pasar una clase a otra
Publicado por: BlackZeroX en 13 Julio 2012, 12:39 pm
Yo aprendí aquí:

http://www.zator.com/Cpp/E_Ce.htm

P.D.: No es que sean poco comunes es que solo mezclamos C con C++ en si static_cast, reinterpret_cast, const_cast, etc  son simples Cast de C pero especialmente para C++...

Dulces Lunas!¡.