402 votes

Modèle C ++ typedef

J'ai une classe

template<size_t N, size_t M>
class Matrix {
    // ....
};

Je veux faire une typedef , ce qui crée un Vector (vecteur colonne) qui est équivalent à un Matrix avec des tailles N et 1. Quelque chose comme ça:

typedef Matrix<N,1> Vector<N>;

Ce qui produit une erreur de compilation. Le code suivant crée quelque chose de similaire, mais pas exactement ce que je veux:

template <int N>
class Vector: public Matrix<N,1>
{ };

Est-il une solution ou une pas trop cher / contournement des meilleures pratiques? Merci à l'avance!

600voto

GManNickG Points 155079

C ++ 11 a ajouté des déclarations d'alias , qui sont une généralisation de typedef , autorisant les templates:

 template <size_t N>
using Vector = Matrix<N, 1>;
 

Le type Vector<3> est équivalent à Matrix<3, 1> .


En C ++ 03, l'approximation la plus proche était:

 template <size_t N>
struct Vector
{
    typedef Matrix<N, 1> type;
};
 

Ici, le type Vector<3>::type est équivalent à Matrix<3, 1> .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X