Código c++:
Ver original
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; } }
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.
Código c++:
Ver original
float dist(void) //devuelve la distancia euclidea del vector. { }
y también intenté:
Código c++:
Ver original
float dist(void) //devuelve la distancia euclidea del vector. { ap_vector *temp; temp=new ap_vector(*this); delete temp; }
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
y me gustaría saber porqué no funciona (probablemente funcione sin problema en Java).
¡Reto para programadores!