Klasa przechowująca wskaźnik do metod innych klas w jednej zmiennej
Ostatnio zmodyfikowano 2017-03-11 19:21
fokusx Temat założony przez niniejszego użytkownika |
Klasa przechowująca wskaźnik do metod innych klas w jednej zmiennej » 2017-03-11 15:52:58 Witam, zastanawiam się w jaki sposób dowolne klasy z zewnątrz mogłyby przekazać wskaźniki swoich metod aby wywoływały się w klasie FixedUpdate (klasa ta powinna zapamiętać te wskaźniki żeby wywoływać je regularnie) w metodzie void Update(). Bez zapamiętywania mogę zrobić to tak: class ZewnetrznaKlasa1 { public: typedef void( * foo )( void ); void metodaDoWywolania() { cout << " dziala!"; } };
class FixedUpdate { public: void Update( ZewnetrznaKlasa1 * ptr, ZewnetrznaKlasa1::foo doWywolania = NULL ) { ( ptr->* doWywolania )(); }; int main() { ZewnetrznaKlasa1 zewnetrznaKlasa1; FixedUpdate fixedUpdate; fixedUpdate.Update( & zewnetrznaKlasa, & ZewnetrznaKlasa1::metodaDoWywolania ); }
Z tym że chcę aby klasa FixedUpdate zapamiętała wszystkie przekazane wskaźniki metod np. w vector, jakaś rada? Dodatkowo wskaźniki do swoich metod mogą podawać różne (nieznane) klasy (ich obiekty). |
|
Bielan |
» 2017-03-11 16:22:19 Poczytaj sobie o std::function <> . Niech klasa ma kolekcję wskaźników i wywołuje je wszystkie za pomocą pętli. |
|
fokusx Temat założony przez niniejszego użytkownika |
» 2017-03-11 19:21:03 Dziękuję. |
|
« 1 » |