Рассмотрим следующий класс шаблонов
class MyClassInterface {
public:
virtual double foo(double) = 0;
}
class MyClass<int P1, int P2, int P3>
: public MyClassInterface {
public:
double foo(double a) {
// complex computation dependent on P1, P2, P3
}
// more methods and fields (dependent on P1, P2, P3)
}
Параметры шаблона P1
, P2
, P3
находятся в ограниченном диапазоне, например, от 0
до некоторого фиксированного значения n
, зафиксированного во время компиляции.
Теперь я хотел бы создать метод "factory", например
MyClassInterface* Factor(int p1, int p2, int p3) {
return new MyClass<p1,p2,p3>(); // <- how to do this?
}
Вопрос заключается в том, как достичь построения класса шаблона, когда параметры шаблона известны только во время выполнения. И возможно ли это с параметрами шаблона, имеющими очень большой домен (например, двойной)? Пожалуйста, учтите также, что возможное решение можно расширить для использования большего количества параметров шаблона.