У меня есть указатель на базовый класс (B
) и вы хотите создать и инициализировать его с помощью разных производных классов на основе условия.Ускоренный способ создания и инициализации объекта базового класса с производными классами
Я ищу лучшее и более короткое решение для следующего сценария. Как вы заметили в каждом случае коммутатора, я должен указать указатель на производный класс, чтобы иметь возможность его инициализировать. Возможно ли, что я создаю экземпляр, литье и инициализацию более компактно?
BaseClass b;
switch (x)
{
case 1:
b = new D1(); // D1 is derived from BaseClass
D1 d1 = (D1) b;
d1.x = 1; // x is specific to D1 class
break;
case 2:
b = new D2(); // D2 is derived from BaseClass
D2 d2 = (D2) b;
d2.y = 1; // y is specific to D2 class
break;
}
b.z = 1; // z is a common attribute
b.w = 2; // w is a common attribute
BaseClassList.Add(b);