[C++/Template] Variablenalias

cwriter

Erfahrenes Mitglied
Hallo Welt

In einer Vektortemplateklasse mit beliebig vielen Dimensionen möchte ich gerne einen Vereinfachten Zugriff für die gängigen Dimensionen (x, y, z) haben.

In einem ersten Anlauf dachte ich an einen Vektor, der im Konstruktor auf die Anzahl Dimensionen gebracht wird.
C++:
    template <int dim, typename T>
    class Vector
    {
      
    public:
        Vector()
        {
            m_vec.resize(dim, T(0));
        }
        ~Vector()
        {

        }


       std::vector<T> m_vec;
      
    };

Das geht auch, nur möchte ich wirklich Shortcuts auf x, y, z haben. Ich dachte dabei an etwas wie
T& x = m_vec[0];

Jedoch ist mir durchaus klar, dass das aufgrund der Laufzeit-Initialisierung des Vektors wohl ein bisschen schwierig werden wird.
Da templates ja kompiliert werden, dachte ich dann an einen statischen C-Array:
C++:
    template <int dim, typename T>
    class Vector
    {
    public:
        Vector()
        {
          
        }
        ~Vector()
        {

        }

        T[dim] m_vec;

        T& x = m_vec[0];
        T& y = m_vec[1];
        T& z = m_vec[2];
      
    };
Interessanterweise will dies der Compiler (VS2015 Community) nicht: C2059 Syntax Error: '[' bei T[dim] m_vec;

C++:
T m_vec;
T& x = m_vec;
geht allerdings ohne Murren. Ich habe mich erst sehr oberflächlich mit Templates beschäftigt, aber sollten die Werte zwischen '<' und '>' sich nicht wie alte C-#defines verhalten und direkt mit dem gelieferten Parameter ersetzt werden? Oder habe ich sonst was übersehen? Und wie kann ich diese Art der Verlinkung bewerkstelligen?

Gruss
cwriter

/EDIT:
Ich, ähm, schäme mich.
T[dim] m_vec sollte natürlich T m_vec[dim] sein, dann läuft auch alles :oops:
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück