Erstellen einer Typdefinition für einen Matrix-ähnlichen Vektor mithilfe von Vorlagenaliasen
Betrachten Sie die folgende Klassenvorlage:
template<size_t N, size_t M> class Matrix { // .... };
Das Ziel besteht darin, eine Typdefinition zu definieren, die einen Vektor (Spaltenvektor) erstellt, der einer Matrix mit den Größen N und 1 entspricht. Zunächst wurde der Versuch mit einer Typdefinition durchgeführt:
typedef Matrix<N,1> Vector<N>;
Dies führte jedoch zu einem Kompilierungsfehler. Eine ähnliche, aber nicht identische Lösung wurde mithilfe der Klassenvererbung erreicht:
template <size_t N> class Vector: public Matrix<N,1> { };
Um eine geeignetere Lösung zu finden, wenden wir uns den in C 11 eingeführten Alias-Deklarationen zu:
template <size_t N> using Vector = Matrix<N, 1>;
Dies ermöglicht die Erstellung eines Typalias Vector
In C 03 kann eine ähnliche Näherung mithilfe einer Struktur mit einer verschachtelten Typdefinition erreicht werden:
template <size_t N> struct Vector { typedef Matrix<N, 1> type; };
Hier ist der Typ Vector< N>::type entspricht Matrix
Das obige ist der detaillierte Inhalt vonWie kann ich in C einen Vektortyp-Alias aus einer Matrixvorlage erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!