Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja wirtualna z roznym typem struktur

Ostatnio zmodyfikowano 2014-04-22 21:59
Autor Wiadomość
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 /*lub Archer*/
). 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?
P-108452
pekfos
» 2014-04-21 13:11:26
Klasa bazowa dla wszystkich broni i zwracanie wektora wskaźników?
P-108453
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
P-108455
pekfos
» 2014-04-22 17:47:15
?
P-108516
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.
P-108525
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
P-108529
michal11
» 2014-04-22 21:59:18
Jeżeli jest ci potrzebna to jest sens.
P-108533
« 1 »
  Strona 1 z 1