Array von Objekten, Konstruktor Problem

Hallo!
Am besten zeige ich das Problem mit einem kleinen Beispiel auf.

Class test_C
{
test_C(int n)
~test_C();
private:
int *a;
};

test_C::test_C(int n)
{ a = new int [n]; }
test_C::~test_C()
{ delete [] a; }

void main(void)
{
test_C *T;
int n = 5;
int Length = 100;
//Jetzt kommt das eigentliche Problem
T = new test_C(Length) [n]; //Geht nicht
}

Geht das überhaupt, ein array von Objekten zur Laufzeit anzulegen und gleichzeitig dem Konstruktor mitzuteilen, wie er diese zu initialisieren hat??

MfG
H.Biegler

Hallo,

void main(void)
{
test_C *T;
int n = 5;
int Length = 100;
//Jetzt kommt das eigentliche Problem
T = new test_C(Length) [n]; //Geht nicht
}

Das Problem ist, dass der new Operator n-mal aufgerufen werden muss, was mit (new …) [n] nicht passiert.

Ich hab schon seit einiger Zeit nicht mehr richtig C++ programmiert, aber das müsste auf zwei Arten lösbar sein:

  1. Du machst es nicht mit new, sondern legst die Objekte als Array von lokalen Variablen an:

    T = (test_C(Length))[n];

(ohne Garantie)

oder
2. Du rufst in einer Schleife new für jedes *T auf:

int n = 5;
test\_C \*\*T = new (\*test\_C) [n]; // oder test\_C \*T[5];
int Length = 100;
 
for (int i = 0; i 
(auch ohne Garantie, sollte aber gehen :wink:

Klaus