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 stimmtkennt jemand eine Fehlerlösung?
-
Den Templateparameter musst du schon angeben, z.B.:
Vector<int> someVector(10);