Скажем, у меня есть класс, который может использовать различные типы функций расстояния (евклидово расстояние и т. Д.) Для некоторых сравнений. Я реализовал эти функции как подклассы класса Distance:
class Distance;
class EuclideanDistance : public Distance;
class OtherDistance : public Distance;
Кажется, чтобы выбрать, какой тип расстояния использовать, я мог бы сделать:
template <typename TDistance>
class MyClass;
и создать его экземпляр с помощью:
MyClass<EuclideanDistance> instance;
или проделать то же самое с:
class MyClass
{
public:
Distance* myDistanceFunction;
}
и создание его экземпляра с помощью
MyClass instance;
instance.myDistanceFunction = new EuclideanDistance;
, есть ли преимущества одного метода перед другим?
Спасибо,
Дэвид