Arrays von Smartpointern elegant initialisieren

soeni1987

Mitglied
Huhu,

ich habe mal ne Frage. Ich habe ein Array von Smartpointern. Jedem Element dieses Arrays möchte ich eine neue Instanz zuweisen. Mein Testcode dazu sieht so aus:

Code:
    shared_ptr<Test> testPointer[8];

    // Schnelle initialisierung


    testPointer[0].reset(new Test());
    testPointer[1].reset(new Test());
    testPointer[2].reset(new Test());
    testPointer[3].reset(new Test());
    testPointer[4].reset(new Test());
    testPointer[5].reset(new Test());
    testPointer[6].reset(new Test());
    testPointer[7].reset(new Test());

    for(int i=0;i<8;i++){
        testPointer[i]->testFkt(i);
    }

Klar kann ich die initialisierung in einer Schleife machen. Gibt es aber noch einen eleganteren Weg? kann ich irgendwie sagen testPointer.reset() und er erstellt automatisch neue Instanzen?

Könnt ihr eine gute Beschreibung / Erklährung, wie Smartpointer zu verwenden sind, wo die Fallstricke liegen usw. empfehlen?

Gruß
 
Hi

da testPointer ein ganz normales Array ist, egal wie smart die Klassen drin auch immer sind:
Schleife.

Gruß
 
Hallo,

Für so ein Problem kann mans nur mit einer Schleife machen, die einzige Alternative dazu ist die Variante die du schon hast, aber die ist halt nicht sehr schön.
Ich verstehe außerdem noch nicht ganz warum du nach etwas anderem als einer Schleife machen willst.
 
Man könnte die Schleife ja natürlich auch aus if und goto zusammenbauen... :D
aber andere Möglichkeiten fallen mir nicht ein.

Und wie SteinerB schon sagte: Was ist so schlimm an einer Schleife?

Gruß
 
Zurück