Witam, mam do napisania listę która będzie przechowywać różne typy danych. To akurat nie był problem, dziedziczenie, polimorfizm itp itd :D ale problem się zaczął przy ostatnim podpunkcie zadania. o to on:
[code]
Proszę postarać się aby program był elastyczny względem obsługi nowych
typów, tzn. aby dodanie obsługi nowego typu wymagało co najwyżej dokom-
pilowanie odpowiedniej klasy opisującej typ, a nie wymagało ingerencji w kod
źródłowy.
[/code]
Słyszałem, że można to zrobić tylko nie za bardzo wiem jak. Jest ktoś w stanie mi pomóc i przynajmniej mnie naprowadzić na jakiś trop?
Z góry dziękuje :)
JAKI JĘZYK
Zapomniałem dopisać, przepraszam. C++
W takim razie użyj szablonu http://pl.wikipedia.org/wiki/Szablon_%28C%2B%2B%29
MAm szablon i dlatego mogę dodawać do listy każdy typ. ALe np jak stworze nowy typ osoba w oddzielnym pliku osoba.h to muszę ingerować w swój kod aby dopisać 2 linijki. 1)#include "osoba.h" 2) nowy = new Węzeł<osoba> a w tym podpunkcie jest napisane że BEZ ingerowania w swój kod.
Linijki 1 nie unikniesz niezależnie od metody (wydaje mi się że podpada pod wspomniane w zadaniu dokompilowanie), 2 da się chyba zrealizować w wspomnianym szablonie (nie osoba tylko "zamiennik argumentu").
NO tak ale będzie to działało tak samo. CZyli zwykły szablon klas. ALe nadal będę musiał stworzyć nowy węzeł z danym typem czyli ta 2 Linijka :-( chyba że jakoś inaczej na być
@Motti masz zapewne napisać coś w stylu "biblioteki". Z biblioteki ktoś korzysta. To znaczy ze masz napisać taki kod, ze jak ktoś sobie go wkompiluje w swój projekt i w swoim projekcie napisze
new Wezel<mojaKlasa>()
to mu to zadziała. C++ nie udostępnia takich cudów jak Java (refleksja) żebyś mógł to zrobić inaczej. W javie dałoby się po samej nazwie klasy tworzyć jej obiekty, tutaj nie da rady.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.