У меня есть два класса, один из которых является подклассом другого, и отличается только тем, что он содержит дополнительную переменную-член для своего родителя.Я не использую конструктор по умолчанию, передавая ссылку на один объект в качестве параметра конструкторов.Я хотел бы, чтобы конструктор родительского объекта исследовал этот объект, а затем определил, следует ли создавать экземпляр родительского класса (в большинстве случаев) или подкласса (в нескольких специализированных случаях).
class Superclass
{
public:
Foo foo;
Superclass(MyObject* object)
{
foo = object->GetFoo();
if(object->CreateSubclass())
{
//Create Subclass
}
else
{
//Create Superclass
}
}
};
class Subclass : public Superclass
{
public:
Barr barr;
Subclass(MyObject* object)
{
barr = object->GetBarr();
}
};
Я знаю шаблон проектирования фабрики, но не хочу иметь фабричный объект только для этого.Я предпочел бы дублировать материал инициализации Суперкласса в Подкласс (который кажется плохим), а затем исследовать объект в каждой из точек, где создается Суперкласс, и затем вызывать соответствующий конструктор:Подобные вещи возможны, и если да, то как мне будет вызывать конструктор подклассов из конструктора суперкласса?Я попытался позвонить Subclass(object)
, но у меня возникли проблемы с суперклассом и подклассом, которые необходимо определить раньше другого.
Спасибо за любой совет, который вы можете дать.