Witam,
Mam świadomość, iż moje pytanie może wydać się dosyć dziwne - bo w zasadzie sam jakoś mam co do tego mieszane uczucia - ale podobno da się coś takiego dość składnie zrobić w C++ie.
O co chodzi (upraszczam tu cały problem, co by nie rozpisywać się odnośnie całego zadania* a jedynie jego części która sprawia mi kłopot)...
Wyobraźmy sobie, że mamy pewną klasę np. taką
class Glowna{
virtual foo(){ cout << "Unknown"; }
};
Po tej klasie dziedziczy ileś tam klas pochodnych z których każda przedefiniowuje metodę foo().
Do tego zestawu klas chcemy dopisać program, który będzie tworzył vector typu Glowna, taki że jego size jest równy ilości klas pochodnych a każdy jego element jest obiektem innej klasy pochodnej (choć zapisanym pod typem wskaźnik do pamięci bazowej) a następnie wywoływał na każdym elemencie tego wektora metodę foo.
W czym problem?
Jak stworzyć wektor w taki sposób, by dodanie do programu kolejnej klasy pochodnej dało się zamknąć w klamerkach definicji tej klasy. Czyli innymi słowy żeby wpisać w miejsce wielokropka w poniższym kodzie takie "magiczne coś" by vector gdzieś tam w programie zawierał również element nowo powstałej klasy (tu: NowkaSztuka):
class NowkaSztuka{
...
};
Niestety koncepcja programowania jest narzucona* i nie można jej zmienić.
Wszelkie wskazówki mile widziane.
Z góry dziękuję i pozdrawiam
fiedukow
-
- to jest bardzo mały fragment całego zadania, ale właściwie jedyny który sprawia mi kłopot (właściwie to nie wiem jak do tego podejść) - cała reszta mimo że dosyć złożona jest w kategoriach "do zrobienia" i raczej sobie z tym poradzę, stąd nie widzę sensu w zanudzaniu tym forumowiczów.