Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. // to_compile.cpp
  2.  
  3. template <class Managee>
  4. class Manager
  5. {
  6. public:
  7.     static Manager* getInstance();
  8.    
  9.     void add(Managee* m);
  10. };
  11.  
  12. template <class Managee>
  13. void Manager<Managee>::add(Managee* m)
  14. {
  15.     void add(Managee* m);
  16. }
  17.  
  18. // ----------------------------
  19. template <class Manager, class Derived>
  20. class Managee
  21. {
  22. public:
  23.     Managee();
  24. };
  25.  
  26. class Updated;
  27.  
  28. template <class Manager, class Derived>
  29. Managee<Manager, Derived>::Managee()
  30. {
  31.     // Manager -> UpdateManager
  32.     // this -> Managee<UpdateManager>
  33.     // Manager::add(Managee*) -> UpdateManager::add(Updated*)
  34.     Manager* manager = (Manager*)Manager::getInstance();
  35.     manager->add((Derived*)this);
  36. }
  37.  
  38. // ----------------------------
  39. class UpdateManager : public Manager<Updated>
  40. {
  41. public:
  42. };
  43.  
  44. // ----------------------------
  45. class Updated : public Managee<UpdateManager, Updated>
  46. {
  47. public:
  48.     Updated() : Managee<UpdateManager, Updated>()
  49.     {
  50.     }
  51. };
  52.  
  53. int main()
  54. {
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement