Przekazywanie wskaźnika do klasy.
Ostatnio zmodyfikowano 2013-08-25 13:44
kemsai Temat założony przez niniejszego użytkownika |
Przekazywanie wskaźnika do klasy. » 2013-03-29 12:21:45 WItam. Nie za bardzo wiedziałem jak nazwać temat więc sie nazywa tak a nie inaczej. Przechodząc do mojego problemu. W M Visual 2010 piszę małą gre z użyciem SFML 2.0 i chcę zrobić by z klasy rodzica można było użyć metody z klasu potomnej. Dla przykłady wykombinowałem sobie to tak: Mam klase Thing, a z niej dziedziczy klasa Tile. W metodzie Tile umieszam metode Tile * getTile() { return this; };
Z założenia chcę by wszystkie inne obiekty które nie są klasą creature zwracały wartość NULL, czyli w Thing.h piszę: virtual Tile * getTile() { return NULL; };
Problem w tym że w klasie Thing.h klasa Creature nie jest widoczna przez co nie mogę tego skompilować... Includować pliku "creature.h" też nie mogę bo wtedy się coś psuje... Jak rozwiązać taki problem? |
|
unimator |
» 2013-03-29 19:15:16 W metodzie Tile umieszam metode
|
Chyba w klasie. Problem w tym że w klasie Thing.h
|
Plik nagłówkowy nie może być klasą. Strasznie to namieszałeś jak dla mnie. Napisz jeszcze raz jak powiązane są ze sobą klasy Thing, Tile, Creature i ta cała reszta. Czy się zawierają, czy są pochodnymi/bazowymi itp. |
|
DejaVu |
» 2013-08-25 13:44:15 Wystarczy zrobić forward declaration, czyli poinformować kompilator, że taka klasa będzie gdzieś istniała w kodzie, ale jej typ na chwilę obecną nie ma większego znaczenia. class Klasa;
class InnaKlasa { public: virtual Klasa * dajKlase() { return NULL; } };
class Klasa : public InnaKlasa { virtual Klasa * dajKlase() { return this; } }; |
|
« 1 » |