in set klasse vector verwenden, problem
-
Hi ihr,
ich versuche mich grad an templates und klassen, und habe nun ein problem:
tvector.h
//--------------------------------------------------------------------------- #ifndef tvectorH #define tvectorH //--------------------------------------------------------------------------- template<class T> class tvector { public: tvector(int size) //Konstruktor um Feld anzulegen { m_size=size; m_data = new T[m_size]; } tvector(const tvector& tv) //Copy-Konstruktor { m_size=tv.m_size; m_data = new T[m_size]; for(int i=0;i<m_size;i++) m_data[i]=tv.m_data[i]; } ~tvector() //Destruktor löscht Feld { delete[] m_data; } T size() {return m_size;} //Gibt aktuelle Größe zurück T& operator[](int index) //Gibt Daten an Indexposition zurück { assert(index>=0); assert(index<m_size); return m_data[index]; } tvector& operator=(const tvector& tv) { if(this!=&tv) { m_size=tv.m_size; delete[] m_data; m_data = new T[m_size]; for(int i=0;i<m_size;i++) m_data[i]=tv.m_data[i]; } return *this; } private: T* m_data; int m_size; void Grow(int newSize) //um neues größeres Array anzulegen { T *temp = new T[m_size]; for(int i=0;i<m_size;i++) temp[i]=m_data[i]; m_data = new T[newSize]; for(int i=0;i<m_size;i++) m_data[i]=temp[i]; m_size=newSize; delete[] temp; } }; #endiftset.h
//--------------------------------------------------------------------------- #ifndef tsetH #define tsetH class tset { public: tset():m_data(10){m_size=0;} private: tvector<int> m_data; int m_size; }; //--------------------------------------------------------------------------- #endifFehler:
[C++ Fehler] tset.h(11): E2303 Typname erwartet [C++ Fehler] tset.h(11): E2139 In Deklaration fehlt ; [C++ Fehler] tset.h(8): E2312 'm_data' ist keine eindeutige Basisklasse von 'tset'wo liegt denn mein fehler, irgendwie seh ichs net!
-
#include "tvector.h"an den Anfang von tset.h
-
hm...hatte das in der tset.cpp eingebunden!
Also muss ich das auch explizit in der tset.h machen?!
-
Klar, wenn du das Template verwendest.