anfänger problem -> string array ?
-
also ich habe folgenden code:
...
hab jetzt was geändert:#include <iostream> #include <string> #include <assert.h> using namespace std; template<class T> class Vector { private: int size; T *data; public: Vector(int m_size) { size = m_size; data = new T[size]; } ~Vector() { delete[] data; } void fillIn(T toFillIn) { T *tempdata = new T[size+1]; tempdata = data; delete[] data; data = new T[size+1]; data = tempdata; delete[] tempdata; size+=1; data[size] = toFillIn; } void print() { for(int i=0;i<=size;++i) { cout<<data[i]<<endl; } } double &operator[] (int index) { assert(index>=0); assert(index<size); return data[index]; } }; void main() { cout<<"Starte Telefonbuch"<<endl; Vector<string> namen(3); namen.fillIn("fuck"); //namen.print(); }
jeeeeetzt kriege ich n debug fehlerfenster wenn das Programm startet!
da steht irgendwas von debug assertion failed
von wegen _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
in dbgheap.c
-
#include <iostream> #include <string> using namespace std; template<class T> class Vector { private: int size; T *data; public: Vector(int m_size) { size = m_size; data = new T[m_size]; } ~Vector() { delete[] data; } void fillIn(T toFillIn) { T *tempdata = new T[size+1]; copy(data,data+size,tempdata); delete []data; data=tempdata; data[size] = toFillIn; size+=1; } void print() { for(int i=0;i<size;++i) { cout<<data[i]<<endl; } } }; void main() { cout<<"Starte Telefonbuch"<<endl; Vector<string> namen(3); namen.fillIn("bla"); namen.print(); }
-
ahhhh! es klappt danke!
aber was war denn bei meiner (unschönen) version der fehler?sonst lern ich ja nix draus
-
Wie wärs mit dem vergleich der Quelltexte ?!
-
jaaa ich seh schon das es anders gemacht ist...ich bin mir aber meines fehlers nicht wirklich bewusst! liegts vielleicht hier dran:
data = new T[size+1];
?
-
#include <iostream> #include <string> #include <vector> using namespace std; template <class T> class prvector:public vector<T> { public: void print() { for(int i=0;i<size();i++) cout << at(i); } }; void main() { cout<<"Starte Telefonbuch"<<endl; prvector<string> namen; namen.push_back("bla"); namen.print(); }