Допустим, я пишу приложение, которое работает с проектами и предоставляет различные функциональные возможности в зависимости от типа проекта. У меня есть иерархия классов для разных типов проектов:
class AbstractProject
{
};
class ProjectA : public AbstractProject
{
};
class ProjectB : public AbstractProject
{
};
class ProjectC : public AbstractProject
{
};
Теперь я планировал иметь указатель AbstractProject * _currentProject в качестве члена в главном классе приложения, открывать диалоговое окно при запуске и на основе выбора делать:
_currentProject = new ProjectB(); // e.g.
Позже мне придется понизить указатель на конкретный тип, чтобы использовать функциональность, специфичную для разных Project-ов. Почему-то это заставляет меня чувствовать себя неловко. Есть ли лучший способ сделать это?