Избавиться от повторяемости кода
Имею следующий код. Хотел бы избавиться от повторяемости. По сути все дубляжи друг от друга отличаются только типами Header, Code, NumberedList, MarkedList. Первая мысль - создать коллекцию типов (именно типов, не объектов), и пройтись по ней циклом, а в теле цикла записать блок try. Но, кажется, в c++ это невозможно. Что я могу сделать? Спасибо
#include <iostream>
#include "ParagraphFactory.h"
#include "StringUtils.h"
#include "Code.h"
#include "NumberedList.h"
#include "MarkedList.h"
Paragraph* ParagraphFactory::Create(const wchar_t* const text, OutputConfig config)
{
Paragraph* result = nullptr;
try
{
result = Paragraph::Create<Header>(text, config);
return result;
}
catch (int e)
{
}
try
{
result = Paragraph::Create<Code>(text, config);
return result;
}
catch (int e)
{
}
try
{
result = Paragraph::Create<NumberedList>(text, config);
return result;
}
catch (int e)
{
}
try
{
result = Paragraph::Create<MarkedList>(text, config);
return result;
}
catch (int e)
{
}
throw 0;
}