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

Przekazywanie wskaźnika do klasy.

Ostatnio zmodyfikowano 2013-08-25 13:44
Autor Wiadomość
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
C/C++
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ę:


C/C++
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?
P-79581
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.
P-79589
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.
C/C++
class Klasa; //o to chodzi

class InnaKlasa
{
public:
    virtual Klasa * dajKlase() { return NULL; }
};
//...
class Klasa
    : public InnaKlasa
{
    virtual Klasa * dajKlase() { return this; }
};
P-90871
« 1 »
  Strona 1 z 1