[C con Clase] Problema con puntero this.

Segundo Álvarez cienciaingenieria en gmail.com
Sab Nov 6 12:09:45 CET 2010


Estoy desarrollando una clase contenedor-herramientas para vectores que
dispone de una función que multiplica un vector escalarmente con otro.

[highlight=c++]
        float mult(const ap_vector& data) //multiplica escalarmente con el
vector devolviendo el resultado y null si
                                //tienen distinta dimensión
        {
            float result;
            if (data.dimension != dimension)
            {
                return 0; //devuelve null si no coinciden las dimensiones
            }
            else
            {
                int k;

 for(k=0;k<dimension;k++){result+=elements[k]*data.elements[k];}
                return result;
            }
        }

[/highlight]

la función anterior funciona muy bien y devuelve correctamente el resultado.
El problema es el siguiente, deseao crear una nueva función que devuelva la
distancia euclidea del propio vector, para ello necesito que se multiplique
por si mismo y se realice la raiz cuadrada (libreria correctamente
incluida). Aprovechando las características de encapsulación y ahorro de
código intenté la expresión autoincluida.

[highlight=c++]
       float dist(void) //devuelve la distancia euclidea del vector.
        {

            return sqrt(mult(*this)); //también intenté con this sólo.

        }

[/highlight]

y también intenté:

[highlight=c++]
       float dist(void) //devuelve la distancia euclidea del vector.
        {
            ap_vector *temp;
            temp=new ap_vector(*this);
            return sqrt(mult(temp));
            delete temp;
        }

[/highlight]

El problema es con el uso de this y no es el primero que me da problemas. El
problema lógicamente tiene solución por otro lado pero la pregunta es un
reto para los "freaks" ya que no hay una expresión tan elegante y corta
como

[CENTER][B] return sqrt(mult(this));[/B][/CENTER]

y me gustaría saber porqué no funciona (probablemente funcione sin problema
en Java).
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101106/836cbc5f/attachment.html>


Más información sobre la lista de distribución Cconclase