Supongamos que tengo una clase que puede usar diferentes tipos de funciones de distancia (distancia euclidiana, etc.) para hacer algunas comparaciones. He implementado estas funciones como subclases de una distancia de clase:Diferencia entre elegir una subclase mediante un parámetro de plantilla o instanciar una variable miembro
class Distance;
class EuclideanDistance : public Distance;
class OtherDistance : public Distance;
Parece que para elegir el tipo de distancia de usar, lo que podía hacer:
template <typename TDistance>
class MyClass;
y cree una instancia con:
MyClass<EuclideanDistance> instance;
o lograr lo mismo con:
class MyClass
{
public:
Distance* myDistanceFunction;
}
y no crear instancias con
MyClass instance;
instance.myDistanceFunction = new EuclideanDistance;
son las ventajas de un método sobre el otro?
Gracias,
David
En el segundo método, ¿hay alguna manera de crear un segundo objeto del mismo tipo que el primero? –
@DavidDoria: ¿qué tipo de objeto quieres decir? Un 'MyClass', un' EuclideanDistance'? –
Otro objeto del mismo tipo que myDistanceFunction dentro de MyClass. –