Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // to_compile.cpp
- template <class Managee>
- class Manager
- {
- public:
- static Manager* getInstance();
- void add(Managee* m);
- };
- template <class Managee>
- void Manager<Managee>::add(Managee* m)
- {
- void add(Managee* m);
- }
- // ----------------------------
- template <class Manager, class Derived>
- class Managee
- {
- public:
- Managee();
- };
- class Updated;
- template <class Manager, class Derived>
- Managee<Manager, Derived>::Managee()
- {
- // Manager -> UpdateManager
- // this -> Managee<UpdateManager>
- // Manager::add(Managee*) -> UpdateManager::add(Updated*)
- Manager* manager = (Manager*)Manager::getInstance();
- manager->add((Derived*)this);
- }
- // ----------------------------
- class UpdateManager : public Manager<Updated>
- {
- public:
- };
- // ----------------------------
- class Updated : public Managee<UpdateManager, Updated>
- {
- public:
- Updated() : Managee<UpdateManager, Updated>()
- {
- }
- };
- int main()
- {
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement