Typedef de modèle C pour le vecteur de colonne de matrice
En C, une tâche courante consiste à créer un vecteur de colonne équivalent à une matrice avec des dimensions spécifiques . Par exemple, une classe Vector dérivée d’une classe Matrix serait souhaitable. Malheureusement, l'utilisation du mécanisme typedef standard à cette fin entraîne des erreurs de compilation.
Solution C 11 : Déclarations d'alias
C 11 a introduit les déclarations d'alias, une généralisation de typedef, ce qui permet une spécialisation des modèles. Le code suivant apporte une solution :
template <size_t N> using Vector = Matrix<N, 1>;
Avec cette déclaration, le type Vector<3> est équivalent à Matrix<3, 1>.
Solution de contournement C 03
En C 03, la solution de contournement la plus similaire à la déclaration d'alias consiste à utiliser un typedef imbriqué :
template <size_t N> struct Vector { typedef Matrix<N, 1> type; };
Dans ce cas, Vector<3>::type est équivalent à Matrice<3, 1>.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!