我正在尝试在 C++ 中实现一个 Singleton 类并且有点困惑。好的,假设我有以下两个类:
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");
}