J'essaie d'implémenter une classe Singleton en C++ et je suis un peu confus. Ok, disons que j'ai les 2 classes suivantes:Singleton class - Vraiment confus
class Animal {
public:
virtual int age() = 0;
virtual void breed() = 0;
};
class Cat : public Animal {
public:
Cat();
int age();
void breed();
};
plus classes impliquées dans ce système .... (chien, etc poissons)
Maintenant, j'ai une classe singleton que je peux utiliser 1 objet:
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;
}
MISE À JOUR:
Nouveau 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");
}
Quelle erreur obtenez-vous? –
Restez à l'écart de Singleton antipattern si possible. Si vous avez besoin d'un état commun, utilisez des classes sans état qui permettent d'accéder à cet état commun. Tôt ou tard, cet état commun veut se séparer. –
@WaleedKhan J'ai mis à jour le code et inclus le message d'erreur! – Phorce