mostrom Temat założony przez niniejszego użytkownika |
Konstruktor klasy pochodnej » 2012-07-28 18:48:21 Witam! Witam! tworzę jakiś taki system klas, w którym mógłbym sobie uporządkować obiekty. Hierarchia wygląda tak: Obiekt Character : public Obiekt; NPC : public Character; Player : public Character; InneObiekty : public Obiekt; na początek znajomy kodzik: class Obiekt { public: Obiekt( std::string nazwa, int width, int height ) : _sciezka_pliku( nazwa ) , _width( width ) , _height( height ) { _kolizja = true; } virtual void pokaz( SDL_Surface *, SDL_Rect * gdzie ) = 0; protected: std::string _sciezka_pliku; int _width; int _height; bool _kolizja; };
class Character : public Obiekt { public: Character( std::string nazwa, int width, int height, int hp, int lvl ) : Obiekt( nazwa, width, height ) , _HP( hp ) , _lvl( lvl ) { _font = TTF_OpenFont( "font.ttf" ); } ~Character(); virtual void pokaz( SDL_Surface *, SDL_Rect * gdzie ) = 0; protected: int _HP; int _lvl; TTF_Font * _font; };
class NPC : public Character { public: NPC( std::string nazwa, int width, int height, int hp, int lvl, KOLEJNE_ARG...) : Character( nazwa, width, height, hp, lvl ) , KOLEJNE_ARG(..) { } void pokaz( SDL_Surface *, SDL_Rect * gdzie ); };
class Player : public Character { };
Jak widać, z każdą pochodną klasą u mnie rośnie ilość argumentów konstruktora tej klasy. Czy da się tak to rozwiązać, aby w konstruktorze klasy podawać tylko te zmienne, które dodałem, a dziedziczone pola przypisywać np z innego obiektu klasy podstawowej? W poniższym pseuokodzie podałem jak to sobie wyobrażam: Obiekt zwierze( "zwierzeta.bmp", 10, 10 );
NPC biedronka( hp = 10, lvl = 1 );
biedronka = zwierze;
|
|
RazzorFlame |
» 2012-07-28 20:16:00 Nie lepiej zrobić coś takiego: class JakasKlasa { public: int jakis_int; int inny_int; int inniejszy_int; void UzupelnijInty(); };
class PochodnaKlasa : public JakasKlasa { PochodnaKlasa( <.....> ) { UzupelnijInty(); } };
void JakasKlasa::UzupelnijInty() { jakis_int = 23123; inny_int = 3434; inniejszy_int = 125; }
I jedziesz dalej :P |
|
mostrom Temat założony przez niniejszego użytkownika |
» 2012-07-28 20:50:18 Wtedy musiałbym tworzyć nowe funkcje/metody dla kazdego obiektu klasy. NPC nie jest jeden tylko jest ich kilka i oni sie różnią tymi polami |
|
waxx |
» 2012-07-28 21:15:01 nie ma, musisz stworzyc sobie funkcje choc bym to olal te konstruktory nie sa jeszcze az takie zle :) |
|
kubawal |
» 2012-07-31 20:53:29 nie można tak ? Character( Obiekt & obj, KOLEJNE_ARG...) : Obiekt( obj ) { } |
|
mostrom Temat założony przez niniejszego użytkownika |
» 2012-08-01 11:27:43 Można, dzięki. Oto chodziło :)
|
|
« 1 » |