Witam,
jak w temacie. Jeden obiekt tworzę w taki sposób:
StosWskaznikow<Bilet> obiekt(5);
//Publiczny jest tylko konstruktor StosWskaznikow(unsigned int);
//Domyślny, oraz kopiujący są prywatne
Jak utworzyć tablicę takich obiektów?
Witam,
jak w temacie. Jeden obiekt tworzę w taki sposób:
StosWskaznikow<Bilet> obiekt(5);
//Publiczny jest tylko konstruktor StosWskaznikow(unsigned int);
//Domyślny, oraz kopiujący są prywatne
Jak utworzyć tablicę takich obiektów?
StosWskaznikow<Bilet> obiektilość elementów;
Właśnie tak się nie da. W sumie problem rozwiązałem tworząc tablicę wskaźników, ale i tak ciekawi mnie jak zadeklarować ową statycznie.
ale czemu się nie da? jaki masz błąd?
O ile mnie pamięć nie myli to nie ma możliwości utworzenia takiej tablicy jeśli nie ma dostępu do konstruktora bez parametrów.
Możesz co najwyżej stworzyć całą tablice i jednocześnie ją zainicjalizować.
StosWskaznikow<Bilet> tablica[3] = {StosWskaznikow<Bilet>(3),
StosWskaznikow<Bilet>(7),
StosWskaznikow<Bilet>(0)}
Ewentualnie możesz dodać konstruktor domyślny publiczny wtedy już normalna definicja bez inicjalizacji powinna przejść.
może użyj vector<StosWskaznikow<Bilet> > lub array zamiast kombinować z tymi przestarzałymi struturami danych
C++11: zrób tak jak @Tattva podał z wykorzystaniem vectora. vector<StosWskaznikow<Bilet>> v = { .. };
c++11 użyje move constructor zamiast copy constructor i po kłopocie.
Po jaką cholere tworzysz prywatny konstruktor kopiujący?
Jak już się koniecznie uparłeś na tablice to zawsze możesz wykorzystać placement new:
http://ideone.com/i5Svpa
EDIT:
w sumie to prostsza by była tablica wskaźników, ale to zależy czy chcesz zacować ciągłość pamięci
Żeby go nie używać. Zrobię kopie stosu, zwolnię pamięć i co?
Jak wspomniałem byłem po prostu ciekaw czy się da zadeklarować statycznie. Jak widać, nie, więc dziękuje za pomoc.
StosWskaznikow<Bilet>** stos = new StosWskaznikow<Bilet>*[2];
stos[0] = new StosWskaznikow<Bilet>(5);
stos[1] = new StosWskaznikow<Bilet>(7);
da się statycznie ale nie bez żadnych hacków.
Statycznie (kurcze, przypadkiem edytowałem poprzedni kod zamiast zrobić forka):
http://ideone.com/i5Svpa