sanyaade-g2g-repos / quimeraengine

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

Añadir sobrecargas de clases base en clases derivadas I #150

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Debido a la problemática consistente en que las sobrecargas de métodos en 
clases derivadas (aun con tipos distintos) ocultan las versiones de las clases 
base, se va a proceder a copiar las firmas de las sobrecargas de las clases 
base en las derivadas, siendo estas meras tuberías, inline, que lo único que 
hagan sea llamar a la implementación de la clase base.
Los métodos a añadir son:

    QRotationMatrix3x3::operator*(QBaseMatrix3x3)
    QRotationMatrix3x3::operator*(QBaseMatrix3x4)
    QRotationMatrix3x3::operator*(FloatType)
    QTransformationMatrix::operator*(MatrixType)
    QTranslationMatrix::operator*(MatrixType)
    QSpaceConversionMatrix::operator*(QBaseMatrix4x4)
    QSpaceConversionMatrix::operator*=(QBaseMatrix4x4)
    QSpaceConversionMatrix::operator*=(FloatType)
    QSpaceConversionMatrix::operator*(FloatType)
    QSpaceConversionMatrix::operator*(QBaseMatrix4x3)
    QSpaceConversionMatrix::operator*(QBaseMatrix4x4)

Ver hilo "Problemas de diseño al sobrecargar método genéricos" en foro 
Design para más información.

Original issue reported on code.google.com by Lince3D@gmail.com on 25 Apr 2011 at 8:52

GoogleCodeExporter commented 9 years ago
Es mi primera tarea espero hacerlo bien. Algún consejo?

Original comment by port...@gmail.com on 20 May 2011 at 8:10

GoogleCodeExporter commented 9 years ago

Original comment by port...@gmail.com on 21 May 2011 at 11:29

GoogleCodeExporter commented 9 years ago
Resultado de la revisión:

-Las sobrecargas deben devolver el mismo tipo que la propia clase, por ejemplo, 
operator* de QSpaceConversionMatrix, debe devolver un QSpaceConversionMatrix.

Original comment by Lince3D@gmail.com on 22 May 2011 at 11:20

GoogleCodeExporter commented 9 years ago
Voy a utilizar reinterpret_cast para ello, es correcto?

Original comment by port...@gmail.com on 22 May 2011 at 2:54

GoogleCodeExporter commented 9 years ago
Depende de dónde lo uses, sí. Expón tus dudas en el foro mejor ;).

Original comment by Lince3D@gmail.com on 22 May 2011 at 2:59

GoogleCodeExporter commented 9 years ago

Original comment by port...@gmail.com on 22 May 2011 at 3:12

GoogleCodeExporter commented 9 years ago
Resultado de la revisión:

-operator* que recibe QBaseMatrix4x4 en QSpaceConversionMatrix: Está repetido 
(yo también lo repetí por error). Borra uno de los dos.

-operator* que recibe QBaseMatrix4x3 en QSpaceConversionMatrix: Debe devolver 
un QMatrix4x3 (multiplicando una matriz mxn por una pxr, sale otra mxr).

-operator* en QTransformationMatrix y QTranslationMatrix: Sí es necesario 
hacer la conversión, ya que el resultado de la operación es un MatrixType, 
que es la clase base.

Original comment by Lince3D@gmail.com on 23 May 2011 at 7:25

GoogleCodeExporter commented 9 years ago
para QTransformationMatrix y QTranslationMatrix voy a utilizar este tipo de 
cast:

reinterpret_cast<QTransformationMatrix<MatrixType>&>

es correcto? el operador devolverá QTransformationMatrix<MatrixType> en este 
caso.

Original comment by port...@gmail.com on 24 May 2011 at 9:54

GoogleCodeExporter commented 9 years ago
Correcciones del último comentario.

-operator* que recibe QBaseMatrix4x4 en QSpaceConversionMatrix: Está repetido 
(yo también lo repetí por error). Borra uno de los dos.

He eliminado una de las dos.
-operator* que recibe QBaseMatrix4x3 en QSpaceConversionMatrix: Debe devolver 
un QMatrix4x3 (multiplicando una matriz mxn por una pxr, sale otra mxr).

Cambiado el tipo que devuelve y el cast.
-operator* en QTransformationMatrix y QTranslationMatrix: Sí es necesario 
hacer la conversión, ya que el resultado de la operación es un MatrixType, 
que es la clase base.
cambiado con:
reinterpret_cast<QTransformationMatrix<MatrixType>&>
reinterpret_cast<QTranslationMatrix<MatrixType>&>

Original comment by port...@gmail.com on 25 May 2011 at 8:46

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Resultado de la revisión: Correcta.

Ya puedes hacer commit. Recuerda poner el número y título de la tarea en el 
comentario, y las aclaraciones que creas oportunos, si las hay.

Original comment by Lince3D@gmail.com on 25 May 2011 at 7:38