Разница между выбором подкласса с помощью параметра шаблона или созданием экземпляра переменной-члена

Скажем, у меня есть класс, который может использовать различные типы функций расстояния (евклидово расстояние и т. Д.) Для некоторых сравнений. Я реализовал эти функции как подклассы класса 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;

, есть ли преимущества одного метода перед другим?

Спасибо,

Дэвид

8
задан David Doria 7 November 2011 в 19:48
поделиться