Funkcja wirtualna z roznym typem struktur
Ostatnio zmodyfikowano 2014-04-22 21:59
colorgreen19 Temat założony przez niniejszego użytkownika |
Funkcja wirtualna z roznym typem struktur » 2014-04-21 12:34:00 Witam, otóż mam taki problem: Stworzyłem klase Player i pochode od niej Archer, Wizard i Knight. Player jest klasa abstrakcyją i dzięki "magii" polmorfizmu moge tworzyc gracza za pomocą wskaźnika do Player ( Player * player = new Wizard ). Jednak w klasie archer i wizard jest funkcja o takiej samej nazwie jednak nie moge jej zadeklarować w Player jako czysto virtualną ponieważ przyjmuje inny typ struktury (w Archer std::vector < struct Arrow > & GetWeapon; a w Wizard std::vector < struct Skill > & GetWeapon; ). Problem by nie przeszkadzał jednak gdy wywołuję funkcje manager.GetPlayers()[ i ]->GetWeapon() (z menadżera obiektów zawierającego ten std::vector < Player * > players; ) strajkuje bo przeciez Player nie ma zadeklarowanej funkcji GetWeapon(). Pytanie do was jak to ominąć. Myślałem o tym zeby zrobić to jako funkcje wirtualną w Player przyjmująca strukture ktora by zawirała wszystko. Ale raz ze troche bajzel w kodzie, dwa ze pamięć (moze nie duzo bedzie zajmowac ale zawsze).Czy to jest dobre, czy może jakieś inne propozycje? |
|
pekfos |
» 2014-04-21 13:11:26 Klasa bazowa dla wszystkich broni i zwracanie wektora wskaźników? |
|
colorgreen19 Temat założony przez niniejszego użytkownika |
» 2014-04-21 13:20:57 nie nie nie. tj kiedy archer zaatakuje (strzeli strzałą) ta strzała jest dodawana do wektora (ktory zwracam GetWeapon) przyjmującego struct Arrow. Kiedy Wizard zaatakuje czarem to "pocisk" czaru jest dodawany do wektora (do ktorego tez sie dobieram GetWeapon()) przyjmujacego struct Skill |
|
pekfos |
» 2014-04-22 17:47:15 ? |
|
michal11 |
» 2014-04-22 19:46:43 Stwórz klasę z której będą dziedziczyły Arrow, Skill itp. i ja przesyłaj jako typ vektora. |
|
colorgreen19 Temat założony przez niniejszego użytkownika |
» 2014-04-22 20:32:02 ale jest sens robic po tak "prostą" rzecz klasy? mysle ze chyba upakuje wszysko w jedna strukture, bo a nuż bd chciał zrobić "płonącą" strzałe albo przecięcie powietrza przy machającym mieczu |
|
michal11 |
» 2014-04-22 21:59:18 Jeżeli jest ci potrzebna to jest sens. |
|
« 1 » |