PageRenderTime 51ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Examples/octave/callback/example.h

#
C++ Header | 23 lines | 17 code | 5 blank | 1 comment | 1 complexity | f7dc42ecae152cc88ace6bd6990de483 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  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. };