Wie Konstruktoren in der Element-Initialisiererliste bei integrierten Arrays aufrufen?



  • Ich habe eine Klasse A, die eine andere Klasse B in einem integrierten Array hält. In der Element-Initialisiererliste von A möchte ich jetzt explizit bestimmte B-Konstruktoren aufrufen, aber wie kann man das machen?

    class A
    {
        public:
        A(...): array[0](...), array[1](...) // <- wie?
        {
    
        }
    
        private:
        B array[4];
    };
    


  • du musst ueber placement new arbeiten



  • Hmm, ist das wirklich empfehlenswert? Nachdem was ich jetzt gelesen habe, ist das enorm fehlerträchtig. 😕



  • Roy schrieb:

    Hmm, ist das wirklich empfehlenswert? Nachdem was ich jetzt gelesen habe, ist das enorm fehlerträchtig. 😕

    du musst halt wissen was du tust.
    aber fehlertraechtig? ne...

    die standard library hilft dir ja mit std::destroy, std::construct, std::unitialized_fill,...

    einfach geht es, indem du zB std::vector verwendest, der versteckt das placement new vor dir - er allokiert aber dynamisch speicher und allokiert mehr als du brauchst... dafuer leichter zu verwenden.

    muss man abwegen was du willst...


Anmelden zum Antworten