【发布时间】:2009-06-06 07:37:53
【问题描述】:
我正在寻找 C++ 类设计问题的解决方案。我想要实现的是在基类中有静态方法方法,它将返回后代类型对象的实例。关键是,其中一些应该是单例。我是用 VCL 编写的,所以可以使用 __properties,但我更喜欢纯 C++ 解决方案。
class Base {
private:
static Base *Instance;
public:
static Base *New(void);
virtual bool isSingleton(void) = 0;
}
Base::Instance = NULL;
class First : public Base { // singleton descendant
public:
bool isSingleton(void) { return true; }
}
class Second : public Base { // normal descendant
public:
bool isSingleton(void) { return false; }
}
Base *Base::New(void) {
if (isSingleton())
if (Instance != NULL)
return Instance = new /* descendant constructor */;
else
return Instance;
else
return new /* descendant constructor */;
}
出现的问题:
- 如何声明静态变量
Instance,所以它在后代类中是静态的 - 如何在基类中调用后代构造函数
我认为按照我计划的方式克服这些问题可能是不可能的。如果是这样,我想要一些关于如何以任何其他方式解决它的建议。
编辑:代码中的一些小改动。我错过了几个指针标记。
【问题讨论】:
-
你的意思是
Instance == NULL?