Mam pewien problem, otóż zastanawiam się czy można zainicjować dynamiczną tablicę obiektów wykorzystując konstruktor inny niż domyślny. Najlepiej wyjaśni to przykładowy kod.
class a{
int la;
public:
a(int arg=10);
};
a::a(int arg){
la=arg;
}
void main(){
int ile=0;
cin>>ile;
a* test_a = new a[ile];
return 0;
}
Konstruktor jest tutaj klasycznym konstruktorem domyślnym, tyle ze z parametrem. Jeżeli stworzę dynamicznie tablicę obiektów jak wyżej, konstruktor zostanie wywołany z domyślną wartością parametru i w efekcie dostanę tablicę obiektów w których pole "la" przyjmie wartość 10. Teraz załóżmy że chciałbym móc jeszcze precyzować wartość pola.
int wartosc=0;
cin>>wartosc;
w związku z czym, czy istnieje elegantszy sposób na wykonanie tego:
a* test_a = new a[ile];
for(int i=0;i<ile;i++){
test_a[i]=a(wartosc);
}
gdyż w przypadku gdyby mój konstruktor nie był konstruktorem domyślnym a wyglądał np. tak:
class a{
int la;
public:
a(int arg);
};
to z definicji dynamicznej tablicy w ogóle byłyby nici...
...a może jest sposób na definicję takiej tablicy z obiektów nie posiadających domyślnego konstruktora? No nie wiem, coś w stylu:
a* test_a = new a(wartosc)[ile];
wiem że to moja szalona, radosna twórczość, ale myślę że dobrze obrazuje ideę nad którą rozmyślam