[ Pera_Anarhista @ 12.09.2002. 22:42 ] @
Elem, mucim se sa ovim vec neko vreme, mozda neko zna odgovor:
Ovo je klasa:

class CDTip{
private:
int FreeSize;
public:
CDTip(int VelicinaCD);
... ... ...
};

CDTip:: CDTip(int VelicinaCD){
FreeSize = VelicinaCD;
...
};

A sada , negde u main funkciji :
int VelicinaCD = 650;
CDTip* CD = new CDTip(VelicinaCD)[MaxCDova];

Naravno, ovo ne funkcionise, inace ne bih postavio pitanje . Kako da se ovo uradi, na najelegantniji nacin ? Jasno mi je da bi sa jednom for-petljom problem bio brzo resen, ali to mi je bez veze...

P.S. Program je za rasporedjivanje MP3 direktorijuma po CDovima, tako da se (na jedan vrlo prost, ali zadovoljavajuci nacin) stede diskovi kada se rezu. Ako neko hoce, neka javi, moze da koristi...
[ sspasic @ 13.09.2002. 00:28 ] @
Code:

#include <algorithm>
...
CDTip* CD = new CDTip[MaxCDova];
std::fill(CD, CD + MaxCDova, CDTip(VelicinaCD));

Naravno, treba ti i default konstruktor u CDTip.
[ Časlav Ilić @ 13.09.2002. 09:12 ] @
Da preformulišem pitanje malo opštije: Kako kreirati niz objekata koji nemaju osnovni konstruktor?

Jedino rešenje koje sam ja uspeo da smislim je korišćenje kontejnera. Tako, umesto ovoga što ne radi:

Code:

CDTip* CD = new CDTip(VelicinaCD)[MaxCDova];


napisao bih:

Code:

ttab<CDTip> CD (MaxCDova, 1, CDTip (VelicinaCD));


Šablon ttab je jedna moja kontejnerska klasa, poslednji parametar je osnovni objekat prema kome se inicijalizuju svi objekti u nizu (tip objekta čiji se niz pravi mora da ima kopirajući konstruktor).

Postoji li neko opštije rešenje?
[ sspasic @ 13.09.2002. 10:01 ] @
Klasincan niz mozes da kreiras , koliko mi je poznato, samo ako klasa ima default konstruktor.
Ako ti odgovara std::vector, moze i ovako:
Code:

std::vector<CDTip> CD(MaxCDova, CDTip(VelicinaCD));

Za ovo klasa treba da ima copy konstruktor.