Шаблоны могут определенно помочь вам здесь. Они предлагают способ уменьшить повторение той обработки, которая, как вы говорите, одинакова для всех типов.
Следует ли вам «использовать» их, это, конечно, более сложный вопрос, равно как и вопрос о том, является ли это излишним - оба являются вопросами мнений, но общее использование предполагает, что использование только одной переменной не будет фактором, который решите это.
Если содержимое файлов, содержащих разные типы, необходимо обработать в одном и том же контейнере или если файл может содержать более одного типа, возможно, более подходящим вариантом будет вариант boost.
Поскольку вы читаете типы из файла, эти типы известны во время выполнения, но поскольку список параметров известен во время компиляции, вы можете проверить тип в файле и передать его.
if(typeFromFile == headerValueForint)
{
processFile<int>();
}
else if (typeFromFile == headerValueFordouble)
{
processFile<double>();
}
Однако, как и всех типов вы перечисляете числовые (и я удивляюсь, как обработка действительно может быть таким же, если есть какие-либо другие не числовые типы) вы можете решить, чтобы прочитать все значения в качестве двойников - с подходящая проверка диапазона. Это может занять больше памяти, но влияние этого зависит от того, что на самом деле связано с обработкой.
«Должен ли я использовать шаблон для этого? 'Какие у вас другие варианты? – sjsam
Я не знаю. Возможно, просто объявите указатель на пустоту, выделите необходимую память, скопируйте необработанные данные и затем нарисуйте базу указателей на тип данных. Это не совсем чистый, но я чувствую, что использование шаблона только для одной переменной не является оптимальным. Это ? – whiteShadow
'boost :: variant' - нет необходимости изобретать велосипед. –