- template<class T>
- class Singleton
- {
- public:
- // Guaranteed to be destroyed.
- // Instantiated on first use.
- static T& GetInstance() { static T instance; return instance; }
- private:
- Singleton();
- ~Singleton();
- Singleton(const Singleton &) {}; // Don't Implement
- Singleton& operator=(const Singleton<T>&) {}; // Don't Implement
- Singleton* operator&() {};
- };
- class A : public Singleton<A>
- {
- friend class Singleton<A>;
- private:
- A(); // Should be private
- ~virtual A();
- A(const A&);
- A& operator=(const A&);
- A* operator&();
- };