Убедитесь, что пользователь создает экземпляр нового подкласса
Допустим, есть базовый класс
class Base
{
}
и пользователь создал новый подкласс
class NewDerivedClass : public Base
{
}
Существует также перечисление для всех подклассов:
enum SubclassId
{
Derived1_Id,
Derived2_Id,
...
NewDerivedClass_Id // User has to add this line
}
Теперь есть также фабрика, которая создает производные экземпляры на основе SubclassId
:
class SubclassFactory
{
Base* CreateSubclassInstance(SubclassId subclassId)
{
switch(subclassId)
{
case SubclassId::Derived1_Id:
return new Derived1(params);
case SubclassId::Derived2_Id:
return new Derived2(params);
...
// User has to add the following lines:
case SubclassId::NewDerivedClass_Id:
return new NewDerivedClass(params);
}
}
}
- Как я могу заставить пользователя моего
Base
класс, чтобы добавить новыйId
в перечислении? - Как я могу заставить пользователя моего
Base
класс, чтобы создать его экземпляр вSubclassFactory
?
В лучшем случае я хотел бы увидеть ошибку во время компиляции. Модульное тестирование решения этой проблемы также приемлемо.
Дополнительная информация.
1. Пользователи Base
Класс создает новые подклассы на стороне клиента.
2. Мой код работает в бэкэнде. Я получаю идентификатор подкласса удаленно и использую Factory
создавать экземпляры подклассов, созданных клиентскими программистами.