2 fragwürdige Fehlermeldungen bei Templatebenutzung



  • folgende template klasse:

    #include <assert.h>
    
    template <class T>
    class Vector
    {
    private:
    	T *m_data;
    	int m_size;
    public:
    	Vector(int size)
    	{
    		m_size=size;
    		m_data=new T[m_size];
    	};
    	Vector(const Vector &derAndereVector)
    	{
    		m_size=derAndereVector.m_size;
    		m_data=new T[m_size];
    		for(int i=0;i<m_size;++i)
    			m_data[i]=derAndereVector.m_data[i];
    	};
    	~Vector()
    	{
    		delete[] m_data;
    	};
    	T getSize()
    	{
    		return m_size;
    	};
    	void grow(int newSize)
    	{
    		T *newData=new T[newSize];
    		for(int i=0;i<m_size;i++)
    		{
    			newData[i]=m_data[i];
    		}
    		delete[] m_data;
    		m_size=newSize;
    		m_data=newData;
    	};
    
    	T &operator[](int index)
    	{
    		assert(index>=0);
    		assert(index<m_size);
    		return m_data[index];
    	};
    	Vector &operator=(const Vector &b)
    	{
    		if(&b!=this)
    		{
    			delete[] m_data;
    			m_size=b.m_size;
    			m_data=new T[m_size];
    			for(int i=0;i<m_size;i++)
    			{
    				m_data[i]=b.m_data[i];
    			}
    			return *this;
    		}
    	};
    };
    

    und main

    #include <iostream>
    #include "vector.h"
    
    using namespace std;
    int main()
    {
    Vector someVector(10);
    someVector[1]=2;
    cout<<someVector[1];
    return 0;
    }
    

    Beim kompilieren gibt es einige Fehlermeldungen welche wohl auf 2 hauptsächliche zurückzuführen sind:
    "'Vector': für die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich"
    und
    "'Vector': Klasse besitzt keine Konstruktoren",was komischerweise nicht stimmt

    kennt jemand eine Fehlerlösung?



  • Den Templateparameter musst du schon angeben, z.B.:

    Vector<int> someVector(10);
    

Anmelden zum Antworten