Maison >développement back-end >C++ >Comment définir un typedef de modèle pour une classe de modèle modifiée en C ?

Comment définir un typedef de modèle pour une classe de modèle modifiée en C ?

DDD
DDDoriginal
2024-12-17 00:57:25545parcourir

How to Define a Template Typedef for a Modified Template Class in C  ?

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, une définition de type est souhaité :

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn