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
Libérer: 2024-12-17 00:57:25
original
542 Les gens l'ont consulté

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>;
Copier après la connexion

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>;
Copier après la connexion

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;
};
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal