Witam,
Postaram się zarysować mój problem:
Posiadam klasę World, ktora zawiera w sobie tablicę wskaźników na obiekty typu Postac;
Klasa Postac jest klasą bazową, po której dziedziczą klasa Wojownik oraz klasa Mag;
Po tych 2 klasach dziedziczą z kolei inne (patrz przykład)
class Postac class Wojownik::public Postac class Mag::public Postac
class Berzerker::public Wojowniik class Paladyn:::public Wojownik
class Necromancer::public Mag class Infernalist::public Mag
W klasie Postac znajduje się czysto wirtualna metoda walka();, natomiast klasy Mag i Wojownik nadpisuja metodę walka(), która to z kolei nie jest już czysto wirtualna; (ponieważ ta metoda ma szansę się wywołać, jesli jakas klasa dziedzicząca po klasie Mag lub Wojownik nie ma swojej metody walka();)
Jak już wspomnialem, po klasach Wojownik i Mag dziedzicza różne klasy np. po klasie Wojownik: paladyn, berzerker itd., a po klasie Mag: necromancer, infernalist itd.. Część z tych klas nadpisuje metode walka(), a czesc dziedziczy taka postac, jaka jest w ich bazowych klasach.
Metoda walka(); dla załóżmy klasy Wojownik ma zachowywać się tak, że jeśli spotkają się ci sami wojownicy(ten sam typ wojownika) np. berzerker z berzerkerem, to pozostają neutralni wobec siebie i się rozchodzą, jeśli natomiast 2 inne typy się zpotkają np. berzerker z paladynem, to dochodzi do walki.
I tutaj meritum, jak w metodzie walka();, pisząc ją dla klasy Wojownik sprawdzić czy obiekty, które się spotykają są tego samego typu czy innego(żeby mogły się rozejść lub walczyć).