J'ai un cours
template<size_t N, size_t M>
class Matrix {
// ....
};
Je veux créer un typedef
qui crée un Vector
(vecteur de colonne) qui équivaut à un Matrix
de taille N et 1. Quelque chose comme ça:
typedef Matrix<N,1> Vector<N>;
Ce qui produit une erreur de compilation. Ce qui suit crée quelque chose de similaire, mais pas exactement ce que je veux:
template <size_t N>
class Vector: public Matrix<N,1>
{ };
Existe-t-il une solution ou une solution de contournement pas trop coûteuse/une meilleure pratique pour cela?
C++ 11 ajouté déclarations d'alias, qui sont la généralisation de typedef
, autorisant les modèles:
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>
.