Есть ли способ переопределить функцию, возвращающую шаблонную сущность с разными конструкторами в C ++?
template<T> class A {
virtual shared_ptr<T> createEntity (a)
return make_shared<T>(a);
}
class E
{
int a,b;
E (int x, int y) : a(x), b(y);
}
class B : public A<E> {
int b;
shared_ptr<E> createEntity (a) override
return make_shared<E>(a,b);
}
Стандартный конструктор большинства сущностей будет требовать только одну переменную, тогда как сущности других классов требуют более одна переменная, которая будет построена. Можно ли этого достичь без условной компиляции?
Редактировать: Другие сущности реализуют свой конструктор только с одной переменной "a", поэтому я в основном хочу использовать A :: createEntity (a) в большинстве случаев и хочу использовать B :: createEntitiy в особых случаях.