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");
}
You must define static class object outside of it:
You must define functions in
Catclass: