sanyaade-g2g-repos / quimeraengine

Automatically exported from code.google.com/p/quimeraengine
0 stars 1 forks source link

Añadir métodos As y AsPtr #224

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
Hay que añadir los métodos As() y AsPtr() a las clases base de Math. Ambos 
actúan como el operador As de C#, devolviendo una referencia al tipo 
requerido. Éste es más flexible (y peligroso) que su homónimo de .Net, ya 
que hace la conversión aún si no existe conexión en el árbol de jerarquía 
de clases. Hay que ser muy explícito en la documentación alertando de este 
hecho y del cuidado que hay que tener de no apuntar a un tipo con un tamaño 
determinado usando una referencia a otro tipo de tamaño diferente en memoria.

Implementación:

class MyBaseClass
{
public:

  int x;

  template<class T>
  T& As()
  {
      return reinterpret_cast<T&>(*this);
  }

  template<class T>
  T* AsPtr()
  {
      return reinterpret_cast<T*>(this);
  }

};

Uso:

MyBaseClass c;
AnotherClass a = c.As<AnotherClass>();
AnotherClass* pA = c.AsPtr<AnotherClass>();

Original issue reported on code.google.com by Lince3D@gmail.com on 9 Dec 2011 at 12:53

GoogleCodeExporter commented 8 years ago
Será mejor crear una clase base para todas las clases base de math, de manera 
que sólo haya que escribir el método una vez (es el mismo en todas).

Original comment by Lince3D@gmail.com on 9 Dec 2011 at 3:42

GoogleCodeExporter commented 8 years ago
La clase se llamara, por el momento, QConvertible y residirá en el namespace 
del Core. Las clases base de math heredarán de ella. A la espera de documento 
de descripción de la tarea.

Original comment by Lince3D@gmail.com on 9 Dec 2011 at 3:46

GoogleCodeExporter commented 8 years ago

Original comment by Lince3D@gmail.com on 9 Dec 2011 at 3:47

GoogleCodeExporter commented 8 years ago

Original comment by Lince3D@gmail.com on 11 Dec 2011 at 11:31

GoogleCodeExporter commented 8 years ago
Más información en: 

http://quimeraengine.googlecode.com/files/QConvertible.pdf

Original comment by Lince3D@gmail.com on 11 Dec 2011 at 12:37

GoogleCodeExporter commented 8 years ago

Original comment by Lince3D@gmail.com on 11 Dec 2011 at 12:37

GoogleCodeExporter commented 8 years ago

Original comment by Lince3D@gmail.com on 11 Dec 2011 at 9:57