Czytając topic : 43388 nasunęło mi się jedno pytanie .
Załużmy , że mamy prościutką klasę :
Klasa
{
public:
Klasa(){};
Klasa(int x){ liczba=x; }
int liczba;
};
Teraz tworzymy sobie obiekt , można to zrobić za pomocą 2 konstrktorów :
Klasa obiekt;
lub
Klasa obiekt(liczba);
Wszystko jest ok . Ale co jak chcemy stworzyć tablice obiektów ?
Klasa obiekty[20];
to jest ok , bo urzyliśmy domyślnego konstruktora
ale teraz chcemy utworzyć tablice obiektów używając 2 konstruktora :
Klasa obiekty20 oraz Klasa obiekty(liczba)[20]
obydwie ^ linijki nie działają , wyskakuje error i w sumie się nie dziwie .
I tu jest problem . Oczywiście można to obejść , np tak tworząć konstruktor domyślny , żeby działał tak jak ten z argumentem , ale to nie zawsze zadziała , np gdy chcemy w programie podać jakie argumeny mają być podane do konstruktora . Można to zrobić na wskaźnikach , zrobić :
Klasa *obiekty[20];
i
for(int i=0;i<20;i++)
obiekty[i]=new Klasa(liczba);
ale tutaj tracimy troche na pamięci i nie jest to elegancko .
Czy widzicie jakiś sposób na zaradzenie temu , najlepiej bez alokowania pamięci ?