Фабричный метод без выделения памяти C ++ - PullRequest
0 голосов
/ 27 февраля 2020

Я искал фабричный метод без выделения памяти и пока ничего не нашел.

Я хочу создать дерево наследования, подобное этому:

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);
...
...