Ho una lezione
template class Matrix { // .... };
Voglio creare un typedef
che crea un Vector
(vettore colonna) che è equivalente a una Matrix
con le dimensioni N e 1. Qualcosa del genere:
typedef Matrix Vector;
Che produce errore di compilazione Quanto segue crea qualcosa di simile, ma non esattamente quello che voglio:
template class Vector: public Matrix { };
C’è una soluzione o una soluzione / soluzione non troppo costosa per questo?
C ++ 11 ha aggiunto dichiarazioni alias , che sono la generalizzazione di typedef
, consentendo i template:
template using Vector = Matrix;
Il tipo Vector<3>
è equivalente a Matrix<3, 1>
.
In C ++ 03, l’approssimazione più vicina era:
template struct Vector { typedef Matrix type; };
Qui, il tipo Vector<3>::type
è equivalente a Matrix<3, 1>
.