array in ein anderes kopieren ohne größe und inhalt zu kennen
-
ich wollte eine basisklasse machen für ein projekt:
#include <iostream> #include <cstdlib> using namespace std; template <class T> class matrix { public: matrix(unsigned int z); //eine dimension matrix(unsigned int z, unsigned int s); //zwei dimemsionen ~matrix(); void ausgabe_matrix(); void setze_in_matrix(T *feld); //schiebt hinten rein(matrix) void setze_in_matrix(T *feld, int pos); //für eindim array private: T *matrix_eindim; T **matrix_zweidim; unsigned int zeilen_matr; unsigned int spalten_matr; }das problem liegt in dieser memberfunktion ich möchte zunächst einfach ein array (*feld) in das array (*matrix_eindim, später **array_zweidim) kopieren.
allderings kenn ich nicht die größe und inhalt beider array
wein konstruktor sieht in etwa so aus (der zweidim. entsprechend anders) :
template <class T> matrix<T>::matrix(unsigned int zeilen) { matrix_eindim = new T[zeilen]; zeilen_matr = zeilen; }das ist die problem-impl.:
template <class T> void matrix<T>::setze_in_matrix(T *feld) { feld = new T[problem_x]; }ich versuch dass hier nur aus übungszwecken, denn ich will die sprache lernen. ich kann mir schon denken das man auf die naheliegende stl verweist, aber das hilft mir nicht weiter

ich hoffe dass mir jemand erklären könnte wie man solche kopiervorgänge macht!MFG

-
aus dem Zeiger auf das Feld kannst du die Größe nicht herleiten. Das einfachste wäre die Anzahl der Zeilen als 2. Parameter mit zu übergeben.
-
kann man das nicht errechnen?
-
Nö. Deshalb sind z.B. die klassischen char*-Strings nullterminiert. Und deshalb bekommen auch so viele Funktionen vom OS oder der C-Bibliothek die Arraygröße mitübergeben.
Ich sehe gerade, dass Don Volkard zu dem Thema auch wieder zugeschlagen hat *g*
http://www.c-plusplus.net/forum/viewtopic-var-p-is-839547.html#839547