|
|
| (18 intermediate revisions by 2 users not shown) |
| Line 1: |
Line 1: |
| − | === C++ ===
| + | #REDIRECT [[Main Page]] |
| − | <source lang="cpp">
| + | |
| − | | + | |
| − | 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&();
| + | |
| − | };
| + | |
| − | </source>
| + | |