sdevalex
@sdevalex

C++, паттерны Abstract Factory и Strategy?

Есть ли готовые библиотеки для реализации подобного кода?



BaseHandler::registerType<InfoHandler>(1);<br>
BaseHandler::registerType<AuthHandler>(2);<br>
<br>
BaseHandler* handler = BaseHandler::factory(1); //Находим обработчик по ID<br>




Это попытка сократить такой код:

BaseHandler* handler = 0;<br>
<br>
switch(type)<br>
{<br>
      case 1:<br>
            handler = new InfoHandler;<br>
            break;<br>
<br>
      case 2:<br>
            handler = new AuthHandler;<br>
            break;<br>
}




Когда таких обработчиков 3-4, то все хорошо. А для 20 придумал только такой обход. Для решения задачи написал шаблонный класс, но на него линковщик ругается, так и не нашел почему… поэтому ищу готовые библиотеки.



P.S. В С++ разве нельзя выносить реализацию реализацию шаблонного класса из заголовочного файла? (на это ругается линковщик)
  • Вопрос задан
  • 3008 просмотров
Пригласить эксперта
Ответы на вопрос 1
kirill89
@kirill89
Подобных готовых библиотек не встречал, а вот выносить реализацию за предела заголовков нельзя точно. Шаблонный класс генерирует конкретный класс только в момент первого использования. На сколько я помню, если сразу реализовать конкретный экземпляр в заголовке, то можно будет вынести код в cpp файл, но тогда смысл шаблонов теряется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы