Comment définir un typedef de modèle pour une classe de modèle modifiée
Considérons une classe de modèle Matrix avec les paramètres de type N et M. Pour créer un "Vecteur" (vecteur de colonne) avec des dimensions équivalentes à Matrix
typedef Matrix<N,1> Vector<N>;
Cependant, cette approche conduit à une erreur de compilation.
Alternative et solution
C 11 introduit les déclarations d'alias qui généralisent typedef et permettent le template :
template <size_t N> using Vector = Matrix<N, 1>;
En C 11 et versions ultérieures, le type Vector<3> est équivalent à Matrix<3, 1>.
Solution de contournement pour C 03
Avant C 11, ce qui suit est une approximation proche :
template <size_t N> struct Vector { typedef Matrix<N, 1> type; };
Ici, Vector<3>::type est équivalent à Matrix<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!