Ich möchte eine mathematische Vektorvorlage schreiben. Ich habe eine Klasse, die Typ und Größe als Template-Argument akzeptiert, mit vielen mathematischen Methoden. Nun möchte ich Spezialisierungen schreiben, wo Vektor < 3> zum Beispiel x, y, z als Mitglieder hat, die sich auf Daten [0..3] beziehen.C++ - Verwenden Sie Standardvorlage als Basis für die Spezialisierung
Das Problem ist, dass ich nicht weiß, wie man eine Spezialisierung erstellt, die alles von der Standardvorlage erbt, ohne entweder eine Basisklasse zu erstellen oder alles zweimal zu schreiben.
Was ist der effizienteste Weg, dies zu tun?
template<class Type, size_t Size>
class Vector {
// stuff
};
template<class T>
class Vector<3,T>: public Vector {
public:
T &x, &y, &z;
Vector(): Vector<>(), x(data[0]), y(data[1]), z(data[2]){}
// and so on
};
Das Erstellen einer Basisklasse ist dort der typische Ansatz. –