Напишите класс или шаблон, подходящие для реализации обратных вызовов.
Если вы не знаете, что такое обратные вызовы, то вы можете почитать об этом перейдя по ссылке: http://www.kselax.ru/2013/04/callback-funkcii-funkcii-obratnogo-vyzova/ .
Что касается задачи, то наверно напишем мы класс в котором будет храниться функция обратного вызова, которая допустим будет принимать какую то глобальную функцию. Простинький такой примерчик сделаем.
От такой невзрачный у меня примерчик получился:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//wablon klacca c fynkciei obratnogo vuzova #include <iostream> using std::cout; using std::endl; #include <string> using std::string; template<class T> class obrVuz { public: void funkObr(T& s, void print(T&)) { print(s); } }; template<class T> void funk(T& s) { cout <<s<<' '; } int main() { char* s="Hellow"; obrVuz<char*> a; a.funkObr(s,funk); return 0; } |
Ну что я могу по нему сказать? Ничего больше я не добавлю. Здесь мы в main() создаем объект типа obrVuz<char*> a; , затем вызываем функцию obrVuz::funkObr(), в качестве параметра этой функции передаем строку и funk — это как бы указатель на функцию и все, и нам печатается строка s.
[youtube]http://www.youtube.com/watch?v=3TUek_wcc9U[/youtube]