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

Przekazywanie klasy do innej klasy przez referencje

Ostatnio zmodyfikowano 2011-11-16 21:44
Autor Wiadomość
TheSnake
Temat założony przez niniejszego użytkownika
Przekazywanie klasy do innej klasy przez referencje
» 2011-11-15 20:57:49
Witam, mam problem z wskaźnikami/referencjami w klasach.

Mam klasą CGame, w której jedną z zmiennych jest inna klasa
CEventReceiver EventReceiver;

Ma też inną klasę, która też jest zmienną w tej klasie (CCamera Camera).

Jak mogę przekazać do klasy CCamera jakiś wskaźnik stworzonej już klasy EventReceiver, by z klasy CCamera móc wykonywać metody na tym samym obiekcie? Mam niby działający kod (tzn. kompiluje się :D), ale nic się nie dzieje, nie reaguje w ogóle.

C/C++
class CGame
{
public:
    CCamera Camera;
    CEventReceiver EventReceiver;
};

Klasy CCamera i CEventReceiver mają tylko zwykłe metody do testu typu printf("DZIALA");.

W jednej z metod CGame mam
C/C++
Camera.Init( < tu_chce_przekazac_klase_EventReceiver > );

Chciałbym w potem z klasy Camera móc wykonywać czynności na EventReceiver'ze tak jak na zwykłej klasie, jak powinienem to zrobić?

Pozdrawiam.
P-44123
pekfos
» 2011-11-15 20:59:53
Pokaż co masz.
P-44124
TheSnake
Temat założony przez niniejszego użytkownika
» 2011-11-15 21:13:45
Mm...

CCamera.h
C/C++
class CCamera
{
public:
    void Init( CEventReceiver & evtRecv );
   
    CEventReceiver EventReceiver; // chce zapisać do zmiennej by móc potem w innych metodach używać tej klasy
};

W CCamera.cpp mam z definiowaną metodę Init:
C/C++
void CCamera::Init( CEventReceiver & evntRec )
{
    EventReceiver = evntRec; // nie wiem jak to rozwizac, niby sie kompiluje, ale nie dziala
}

CGame.h
C/C++
class CGame
{
public:
    CGame();
    ~CGame();
private:
    CCamera Camera;
    CEventReceiver EventReceiver;
   
    void InitializeGame();
};

CGame.cpp
C/C++
void CGame::InitializeGame()
{
    Camera.Init( EventReceiver );
}
P-44127
TheSnake
Temat założony przez niniejszego użytkownika
» 2011-11-16 18:23:13
Nikt? ... :|
P-44164
malan
» 2011-11-16 21:44:41
C/C++
class CCamera
{
public:
    void Init( CEventReceiver * evtRecv )
    {
        EventReceiver = evtRecv;
    }
   
    CEventReceiver * EventReceiver; // chce zapisać do zmiennej by móc potem w innych metodach używać tej klasy
};

//...

int main()
{
    CCamera camera;
    CEventReceiver events;
   
    camera.Init( & events );
}
Nie sprawdzałem, ale powinno działać. Analogicznie zrób z drugą klasą.
P-44179
« 1 »
  Strona 1 z 1