trzy słowa: nie da sie.
inicjalizacja tabeli dynamicznej JEDYNIE jest w stanie odpalic konstruktory domyslne, musisz zastosowac jedno z:
- albo +1LoI, czyli jeden level of indirection wiecej, czyli zamiast tablicy obiektow - tablica wskazniki na obiekty, i konstruowac potem obiekty przez new i wskazniki wsadzac do tablicy:
obiekt** tab = new (obiekt*)[...]; // pusta tab wskaznikow
for(i=0,....) tab[i]=new obiekt(a,b,c) // init
- albo wasted default instance, czyli niech ctor() robi nic albo niech tylko zeruje pola, a potem robisz ekstra petle, w ktorej nadpisujesz obiekty w tablicy wlasciwymi poprzez copyctor
obiekt* tab = new obiekt[...]; // tablica defaultowych obiektow
for(i=0,....) tab[i]=obiekt(a,b,c) // nadapisanie kazdego nowym, wlasciwym
- albo 2-phase construction, czyli niech ctor() robi nic albo niech tylko zeruje pola, a potem jakas metoda, np init(a,b,c) niech konczy konstrukcje:
obiekt* tab = new obiekt[...]; // tablica defaultowych obiektow
for(i=0,....) tab[i].init(a,b,c) // "doinicjalizowanie" kazdego po kolei
- albo in-place factories (np sa w ->boost), czyli pomeczyc sie troche, aby w pewien magiczny sposob faktycznie wywolac ctor parametrowy na miejscu i-tego indeksu w tablicy, BEZ wstepnego konstruowania "pustego" obiektu poprzez ctor(), przykladu z lenistwa nie podam