/trunk/Examples/java/callback/example.h

# · C++ Header · 23 lines · 17 code · 5 blank · 1 comment · 1 complexity · f7dc42ecae152cc88ace6bd6990de483 MD5 · raw file

  1. /* File : example.h */
  2. #include <cstdio>
  3. #include <iostream>
  4. class Callback {
  5. public:
  6. virtual ~Callback() { std::cout << "Callback::~Callback()" << std:: endl; }
  7. virtual void run() { std::cout << "Callback::run()" << std::endl; }
  8. };
  9. class Caller {
  10. private:
  11. Callback *_callback;
  12. public:
  13. Caller(): _callback(0) {}
  14. ~Caller() { delCallback(); }
  15. void delCallback() { delete _callback; _callback = 0; }
  16. void setCallback(Callback *cb) { delCallback(); _callback = cb; }
  17. void call() { if (_callback) _callback->run(); }
  18. };