Création d'un typedef pour un vecteur de type matriciel à l'aide d'alias de modèle
Considérez le modèle de classe suivant :
template<size_t N, size_t M> class Matrix { // .... };
Le but est de définir un typedef qui crée un Vector (vecteur colonne) équivalent à une Matrix de tailles N et 1. Initialement, la tentative a été effectuée à l'aide d'un typedef :
typedef Matrix<N,1> Vector<N>;
Cependant, cela a entraîné une erreur de compilation. Une solution similaire mais non identique a été obtenue en utilisant l'héritage de classe :
template <size_t N> class Vector: public Matrix<N,1> { };
Pour trouver une solution plus adaptée, nous nous tournons vers les déclarations d'alias introduites en C 11 :
template <size_t N> using Vector = Matrix<N, 1>;
Cela permet la création d'un alias de type Vector
En C 03, une approximation similaire peut être obtenue en utilisant une structure avec un typedef imbriqué :
template <size_t N> struct Vector { typedef Matrix<N, 1> type; };
Ici, le type Vector< N>::type est équivalent à Matrix
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!