C++ template typedef
j'ai une classe
template<size_t N, size_t M>
class Matrix {
// ....
};
je veux faire un typedef
qui crée un Vector
(vecteur colonne) qui est équivalent à un Matrix
avec les tailles N et 1. Quelque chose comme ça:
typedef Matrix<N,1> Vector<N>;
qui produit une erreur de compilation. Ce qui suit 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?
314
demandé sur
Benjamin Gruenbaum
2010-05-08 21:40:53
2 réponses
C++11 a ajouté les déclarations d'alias , qui sont la généralisation de typedef
, permettant les gabarits:
template <size_t N>
using Vector = Matrix<N, 1>;
le type Vector<3>
est équivalent à Matrix<3, 1>
.
dans 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>
.
468
répondu
GManNickG
2013-01-11 19:28:31
Voici une solution C++0x:
template<size_t N>
class Vector: public Matrix<N,1>{};
-1
répondu
Rchn
2018-10-05 15:20:38