Ich habe eine Klasse, die einen Skalar zusammen mit zugehörigen physikalischen Dimension Exponenten speichert:Wie verwende ich eine Template-Klasse als Template-Parameter?
template <int L, int M, int T, int C, int K, int S, int I>
class Dimension<L, M, T, C, K, S, I>
{
...
}
Ich mag würde einen Vektor wie Klasse (Vec) mit statischen Speicher bauen, die eine Anordnung dieser Objekte speichert. würde ich die Vec Klassenvorlage vermutet etwas aussehen würde:
template <Dimension<L, M, T, C, K, S, I> D, size_t N>
class Vec
{
...
}
Aber dies bewirkt, dass ein Fehler als Template-Parameter D
auf Template-Parametern abhängig (L
, M
, T
, C
, K
, S
, I
). Ich habe ein paar Dinge mit roher Gewalt versucht, aber ich rate nur und würde es vorziehen, von jemandem mit Sachverstand in der Sache die richtige Methode gezeigt zu bekommen.
Ich habe Beispiele gesehen, wo template<class>
in die Vorlage Argumente eingefügt wird, aber ich verstehe nicht ganz, was es erreicht oder sogar, wenn es tatsächlich anwendbar ist. Vielen Dank für Ihre Hilfe.
Beachten Sie, dass mir bewusst ist, dass diese Klassenbeispiele bereits früher implementiert wurden, wahrscheinlich in besserer Weise.
Bearbeiten: Ein Tippfehler korrigiert und Name der Vec-Klasse geändert.
Haben Sie ['std :: array'] (http://en.cppreference.com/w/cpp/container/array) angeschaut? –
Wie gesagt, ich weiß, dass so etwas gemacht wurde (zum Beispiel std :: array und nicht diese Vektorklasse), aber ich bin daran interessiert, mein eigenes zu bauen. Ich möchte ausdrücklich, dass die gespeicherte Klasse auf einen Typ der Dimension <> und nicht auf irgendeine Klasse T beschränkt ist. – Arc