dayn. Array aus Klassenobjekten
-
Guten Tag,
ich muss ein Array von Klassenobjekten zur Laufzeit anlegen. Eine Methode 'datensaetze()' liefert mit die entsprechende Anzahl 'intAnz', die ich dann als Parameter für das Array einsetzen wollte:
class ClaTitelsatz * arrDaten = new arrDaten[intAnz];
Geht aber nich. Wie geht das denn?
Bin dankbar für jeden Hinweis.Gruss Manu
#include <iostream>
#include <sstream>using namespace std;
class ClaTitelsatz
{
private:
string strAUT;
string strJAH;
string strTIT;
public:
void einlesen();
void ausgeben();
};int main()
{
// Anzahl der Datensätze mit der Methode 'datensaetze()'
// zur Lauzeit ermitteln. Lassen wir jetzt mal weg!
// intAnz = datensaetze();
int intAnz = 10;
// Datensatzarray entsprechender Grösse dynamisch anlegen.
// DAS GEHT ABER NICH?
//class ClaTitelsatz * arrDaten = new arrDaten[intAnz];// Was natürlich geht, aber ich weiss ja die Anzahl der
// Datensätze noch nicht.
class ClaTitelsatz arrDaten[10];for (int i = 0; i < intAnz; i++)
arrDaten[i].einlesen();for (int j = 0; j < intAnz; j++)
arrDaten[j].ausgeben();return 0;
}void ClaTitelsatz::einlesen()
{
strAUT = "Autor";
strTIT = "Titel";
strJAH = "2005";
}void ClaTitelsatz::ausgeben()
{cout << "Autor: " << strAUT << endl;
cout << "Titel: " << strTIT << endl;
cout << "Jahr : "<< strJAH << endl << endl;
}
-
kurz und knapp:
ClaTitelsatz *arrDaten = new ClaTitelsatz[intAnz];
...und zum Schluss das delete [] nicht vergessen.
-
DANKE!
Manu
-
Bei "dynamsichen Arrays" lohnt sich auch immermal einen Blick in die Standardbibliothek, da gibts nämliche schöne Listen,Vectoren usw...
Ist natürlich immer ne Frage von Kosten/Nutzen, aber in der Regel sollte man schon versuchen die C++ Objekte zu verwenden wenn es sie schon gibt. Sonst kann man auch glecih C schreiben.