ďťż

Ładny brzuch

wiec w SDL'u zdefiniowana jest następująca struktura:
typedef struct { Uint32 flags; SDL_PixelFormat * format; int w, h; Uint16 pitch; void * pixels; SDL_Rect clip_rect; int refcount; } SDL_Surface;

Chciałbym powiększyć nieco funkcjonalność tej klasy. Więc definiuje klasę Screen w postaci:

class Screen: public SDL_Surface { //tutaj jakies pola i metody... };

Teraz po ustawieniu SDL'a:

SDL_Init( SDL_INIT_EVERYTHING );

wywołuje funkcje która zwraca mi wskaźnik do struktury "SDL_Surface":
Screen * screen = NULL; screen = SDL_SetVideoMode(1024, 768, 32, SDL_SWSURFACE );

Oczywiście kod ten jest niepoprawny, zachodzi tutaj rzutowanie wskaźnika od klasy bazowej do wskaźnika klasy pochodnej.
Moje pytanie, co zrobić aby ten kod zadziałał, czy można w jakiś sposób przeciążyć operator '=' ?




Moje pytanie, co zrobić aby ten kod zadziałał, czy można w jakiś sposób przeciążyć operator '=' ?

Ależ oczywiście, że można ;)
Do klasy dodajesz coś takiego:

MyClass& operator=(const MyNewType& mc) { // tutaj operacje przypisania }

Albo możesz dodać konwresję do klasy.

class Screen { public: Screen(const SDL_Surface&) { flags = SDL_Surface.flags; format = SDL_Surface.format; // ... } };
Użytkownik neosnooze edytował ten post 28 lipiec 2008, 09:07
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •