I m 寻求C++级设计问题的解决办法。 我想要实现的是,在基类中采用静态方法,从而回过来的就是后裔。 问题在于,其中一些应为单一州。 我在《维也纳条约法公约》中写道,有可能使用<代码>_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 */;
}
产生问题:
- how to declare static variable
Instance
, so it would be static in descendant classes - how to call descendant constructors in base class
我认为,我计划如何解决这些问题可能是不可能的。 如果是的话,我要就如何以任何其他方式解决这一问题提出一些建议。
<>Edit:代码略有改动。 我错过了其中几个点。