Dynamisches Array als Eigenschaft einer Klasse
-
Hi,
ich brauche ein großes Array als Eigenschaft einer Klasse. Kann ein dynamisches Array überhaupt eine Eigenschaft sein? Wollte zuerst eine Klasse "Array" erstellen, aber den Konstruktor kann ich in der Definition der anderen Klasse ja nicht aufrufen...
Hat jemand eine Idee, wie ich das lösen kann?Gruß
-
Benutze std::vector<> dann geht alles wie von selbst
-
Darf ich nicht.

Achja, es dürfte ruhig statisch sein, nur ist der Stack zu klein...
-
Aber du kannst doch den Konstruktor einer eingeschachtelten Klasse
im Konstruktor der Oberklasse aufrufen.
-
Achja, es dürfte ruhig statisch sein, nur ist der Stack zu klein...
class foo{ int *m_iData; size_t m_iSize; foo(size_t iSize) : m_iData(new int[iSize]),m_iSize(iSize){} ~foo() {delete m_iData; } int& operator[](size_t iIndex){ assert((iIndex<iSize || iIndex >= 0) ; return m_iData[iIndex]; } }; foo A(100); A[5]=6; int h= A[5];
-
BorisDieKlinge schrieb:
~foo() {delete m_iData; }~foo() {delete[] m_iData; }
-
assert((iIndex<iSize || iIndex >= 0) ;Warum darf der Index nicht 0 sein? Kleiner geht ja sowieso nicht.
-
Braunstein schrieb:
Warum darf der Index nicht 0 sein?
Darf er doch.
-
Stimmt.

Der 0-Vergleich ist also komplett unsinnig.
-
Danke für eure Hilfe!
Mit dem default-Konstruktor hat es geklappt! Hab dort einfach statisch die Array-Größe eingetragen.
Gruß
-
Um nicht extra einen neuen Thread aufzumachen,
Kann man mehrdimensionale Arrays auch mit delete löschen?
also mit delete[][] ?
-
delete[][] gibt es nicht.
siehe FAQ
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39489.html