Есть ли готовые библиотеки для реализации подобного кода?
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. В С++ разве нельзя выносить реализацию реализацию шаблонного класса из заголовочного файла? (на это ругается линковщик)