J'essaie d'ouvrir le (s) fichier (s) de données brutes contenant des nombres en utilisant VC++. Les chiffres peuvent être 8/16/24 bits. J'ai une connaissance préalable de cela pour un fichier donné. Puis-je utiliser des modèles C++ pour créer des variables de tableau pour stocker des nombres lus à partir de fichiers en fonction de leur profondeur de bits? Quelque chose sur les lignes de ce code pseudo:Modèle Array dans VC++ 2008
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
Bien sûr, la variable de modèle « données » doit être utilisé en dehors du champ d'application des cas() conditionals plus tard. J'ai donc besoin de déclarer 'data' comme global (disons, en-tête). Am perdre la piste ici ...
Merci beaucoup pour la réponse! Ce que je voudrais avoir est une seule variable Template (un tableau) qui peut être faite 8/16/24 bits dans le runtime. Des suggestions à ce sujet? – user173438
En fait, je suis sûr que c'est un problème standard. Juste que je ne trouve aucune référence à une solution. – user173438
Oui, ce serait bien pour votre variable de nom de fichier de modèle. Il peut être plus simple d'avoir 3 modèles nommés avec un membre const (de manière équivalente, vous pouvez avoir le nombre comme argument et partiellement spécialiser). –