Я пытаюсь открыть необработанные файлы данных, содержащие некоторые числа, используя VC++. Номера могут быть 8/16/24 бит. Я имею предварительное знание этого для данного файла.Template Array в VC++ 2008
Могу ли я использовать шаблоны C++ для создания переменных массива для хранения чисел, считанных из файлов, на основе их глубины? Что-то на линии этого псевдокода:
if(BitDepth==8)
{
CTemplate<unsigned byte> data; // data type should be unsigned byte
Read8Bit(data);
//.. various ops to read 8 bit data
}
if(BitDepth==16)
{
CTemplate<unsigned short> data; // data type should be unsigned short
Read16Bit(data);
//.. various ops to read 16 bit data
}
if(BitDepth==24)
{
CTemplate<unsigned int> data; // data type should be unsigned int
Read24Bit(data);
//.. various ops to read 24 bit data
}
//Later use 'data' out of scope of if() conditionals
Конечно, переменная шаблона «данные» должно использоваться вне сферы действия, если() условных позже. Поэтому мне нужно объявить «данные» глобальными (например, в заголовке). Теряет след здесь ...
Большое спасибо за ответ! Я бы хотел иметь одну переменную Template (массив), которая может быть сделана 8/16/24 бит во время выполнения. Любые предложения по этому поводу? – user173438
На самом деле, я уверен, что это стандартная проблема. Просто я не нахожу ссылок на решение. – user173438
Да, это будет хорошо для переменной шаблона шаблона. Может быть проще иметь 3 именованных шаблона с элементом const (эквивалентно, вы можете иметь номер в качестве аргумента и частично специализироваться). –