Kleines Template Problem



  • Hallo Folks,

    hier mein Problemcode:

    #include <vector>
    
    template <class T>
    class myClass
    {
    private:
       std::vector<T>* m_vector;
    public:
       Vector(void);
       ~Vector(void);
    
       // weitere Methoden
    };
    
    Vector::Vector(void)
    {
    	m_vector = new std::vector<T>; // Error C2955:'Vector' :use of class template requires template argument list
    }
    
    Vector::~Vector(void)
    {
    	delete m_vector; // Error C2955:'Vector' :use of class template requires template argument list
    }
    

    Warum meckert der Compiler, wenn ich die Klasse Instanziere, übergebe ich doch T und kann damit den std::vector<T> Konstruktor füttern?!

    Schonmal Danke im voraus!

    - Tobi



  • Tsssccchhhullldigung, bin bisschen durch den Wind. Jetzt klappts:

    Vector<T>::Vector(void)
    {
      //...
    }
    
    Vector<T>::~Vector(void)
    {
      //...
    }
    


  • komisch ... müsste nähmlich Vector durch myClass ersetzt werden.



  • (D)Evil schrieb:

    komisch ... müsste nähmlich Vector durch myClass ersetzt werden.

    oder umgekehrt 🙂

    Zudem sollte es eigentlich auch so aussehen:

    template<class T>
    Vector<T>::Vector(void)
    {
      //...
    }
    
    template<class T>
    Vector<T>::~Vector(void)
    {
      //...
    }
    


  • #include <vector>
    
    template <class T>
    class vector
    {
    private:
       std::vector<T>* m_vector;
    
    public:
       vector() { m_vector = new std::vector<T>;
       ~vector() { delete m_vector; }
    };
    

    ...



  • @Tobias W
    Mal so nebenbei, ein std::vector Objekt extra noch dynamisch zu instanzieren, ist ziemlich überflüssig. Dynamische Instanzen solltest du wirklich nur verwenden, wenn sie auch sinnvoll sind. Ansonsten reichen automatische Instanzen vollkommen aus.


Anmelden zum Antworten