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...