У меня есть класс Foo
, который предоставляет некоторую функциональность. Чтобы поддерживать модульность, Foo
должен быть интерфейсом (т. Е. Классом C++ только с абстрактными методами), а реализация Foo может выбрать, как именно реализовать функциональность. Однако мой интерфейс включает в себя метод шаблона. То есть,Интерфейс для методов шаблонов
class Foo
{
public:
template<class T>
void functionality(const T&);
};
невозможно в C++
иметь шаблонные методы virtual
. Есть ли какой-либо метод, который может достичь аналогичного результата (модульность и полиморфизм) с помощью шаблонных методов?
У вас есть конечный, заранее определенный набор типов, с которыми вам нужно это работать? Существуют ли какие-либо свойства 'T', вроде« должен быть целочисленным типом »или« должен быть похожим на функтор »или« должен быть числовым типом », который вы можете нам предоставить? Вам нужны расширения сторонних разработчиков через классы признаков или подобную поддержку? Что, * точно *, делает «функциональность»? Насколько важна производительность в этом случае? (а не просто «мне нравится быстро»: «эта функция должна запускаться один раз на пиксель на 7 Мпх изображения при 60 Гц»). В основном ли алгоритм игнорирует значение 'T', действующего в качестве носителя? – Yakk
http://stackoverflow.com/questions/7968023/c-virtual-template-method – didierc
http://stackoverflow.com/questions/2354210/can-a-member-function-template-be-virtual – didierc