Mamy zalozmy 4 klasy :)
Babcia, Tata, Wujek, Dzieciak
Klasa babcia ma metode x która to jest virtual void x();
No i Tata ma swoją implementacje tej metody, Wujek swoją, Dzieciak swoją :)
Problem w tym że gdy najpierw wywołam metodę wujka, a potem dzieciaka, to ponowne wywołanie metody wujka skutkuje wywołaniem metody dzieciaka:) To tak bardziej obazowo :]
Mrówqa thx :] mniej więcej o to chodziło, tylko teraz mam np tablice 5 przycisków o tak o:
PButton * m_pButton[ 5 ];
z tym że każdy m_pButton to obiekt innego typu np:
m_pButton[ 0 ] = new CMenuButton;
m_pButton[ 1 ] = new CContentButton;
m_pButton[ 2 ] = new CQuitButton;
etc.etc.etc.
No i zakładając że mam metodę
dla każdego takiego przycisku to mógłbym puścić to w pętli:
for( int i = 0; i < 5; i++ )
{
m_pButton[ i ]->CheckIfClick();
}
teraz każdy przycisk ma jeszcze metode:
i swoją własną implementacje (dziedziczą tylko nazwe od przycisku rodzica gdzie metoda jest wirtualna).
Wtedy przykladowa funkcja CheckIfClick() wygląda tak:
void CheckIfClick()
{
if( m_bIsActive )
{
this->OnClick();
}
}
No i tu jest problem.
Mam dwa przyciski i tak, najpierw wciskam pierwszy, wywoluje sie jego metoda, potem drugi, wywoluje sie jego OnClick, a jak znowu wcisnę pierwszy to wywołuje mi sie OnClick drugiego.
Mogę zrobić np sprawdzanie typu obiektu ewentualnie, albo pozmieniac nazwy. Jakies inne, lepsze rozwiazania żeby kod był bardziej "wszechstronny" ?