I am trying to implement a Singleton class in C++ and getting a bit confused. Ok, let's say I have the following 2 classes:
class Animal { public: virtual int age() = 0; virtual void breed() = 0; }; class Cat : public Animal { public: Cat(); int age(); void breed(); }; more classes involved in this system .... (dog, fish etc)
Now I have a singleton class which I can just use 1 object:
class Singleton { public: Animal *newAnimal(string theTypeOfAnimal); private: static Animal* pinstance; }; Animal *Singleton::newAnimal(string theTypeOfAnimal) { pinstance = new Cat; } int main() { Singleton *s; return 0; } UPDATE:
New code:
#include <iostream> using namespace std; class Animal { public: virtual int age() = 0; virtual void breed() = 0; }; class Cat : public Animal { public: virtual int age() { return 9; } virtual void breed() { } }; class Singleton { public: Animal *newAnimal(string theTypeOfAnimal); private: static Animal* pinstance; }; Animal* Singleton::pinstance = 0; Animal *Singleton::newAnimal(string theTypeOfAnimal) { this->pinstance = new Cat; return pinstance; } int main(int argc, char *argv[]) { Singleton s; Animal *myAnimal = NULL; Animal *myAnimal = s->newAnimal("cat"); }