Maison >développement back-end >C++ >Comment puis-je créer un alias de type vectoriel à partir d'un modèle de matrice en C ?

Comment puis-je créer un alias de type vectoriel à partir d'un modèle de matrice en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-30 12:59:11912parcourir

How Can I Create a Vector Type Alias from a Matrix Template in C  ?

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 cela équivaut à Matrix.

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!

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