C++ で Singleton クラスを実装しようとしていますが、少し混乱しています。わかりました、次の2つのクラスがあるとしましょう:
class Animal {
public:
virtual int age() = 0;
virtual void breed() = 0;
};
class Cat : public Animal {
public:
Cat();
int age();
void breed();
};
このシステムに関連するその他のクラス .... (犬、魚など)
これで、1 つのオブジェクトだけを使用できるシングルトン クラスができました。
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;
}
アップデート:
新しいコード:
#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");
}