Я искал фабричный метод без выделения памяти и пока ничего не нашел.
Я хочу создать дерево наследования, подобное этому:
Controller_Base_Class
| |
Specific_Class1 Specific_Class2 ...
Во всех фабричных методах что я видел вспомогательный класс, который создает фактический специфицированный класс c, выделяет память с new и возвращает объект. По некоторым причинам я хотел бы сделать это без нового выделения памяти.
Имея то, что не будет много классов Specifi c, имело бы смысл, чтобы у вспомогательного класса была ссылка на каждый Specifi c класс и возвращает тот, который мне нужен? Что-то вроде:
class BaseClass
{
whatever
}
class Specific1 : public BaseClass
{
whatever
}
class Specific2 : public BaseClass
{
whatever
}
class Factory
{
public:
Factory();
BaseClass* Create(SpecType type);
private:
Specific1 specific1;
Specific2 specific2;
}
Factory::Factory() : specific1(), specific2()
{
}
BaseClass* Factory::Create(SpecType type)
{
if(type==SpecType1)
{
return &specific1;
}
...
}
...
//function where i want to do it
Factory factory = Factory()
BaseClass* inheritance_holder = factory.Create(Spec1Type);
...