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 Managee
- {
- public:
- Managee();
- };
- class Updated;
- template <class Manager>
- Managee<Manager>::Managee()
- {
- // Manager -> UpdateManager
- // this -> Managee<UpdateManager>
- // Manager::add(Managee*) -> UpdateManager::add(Updated*)
- Manager* manager = (Manager*)Manager::getInstance();
- manager->add((Manager::ManagedObject*)this);
- }
- // ----------------------------
- class UpdateManager : public Manager<Updated>
- {
- public:
- typedef Updated ManagedObject;
- };
- // ----------------------------
- class Updated : public Managee<UpdateManager>
- {
- public:
- Updated() : Managee<UpdateManager>()
- {
- }
- };
- int main()
- {
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement