1
我怎样才能返回对象或调用派生类的,其基础是单派生类,其基地返回objec是单身
我怎样才能返回对象或调用派生类的,其基础是单派生类,其基地返回objec是单身
你将不得不使用虚拟静态方法,它是不是在C支持++(这是某个getInstance在Delphi中支持,据我所知 - 好奇)。
您必须决定是否只有两个类或每个类的一个实例(例如,如果您通过GetInstance创建Derived实例,是否应该能够创建Base实例)。
这些类里面没有办法解决这个问题,你必须创建一个类工厂。类似的东西(我已经忽略了单例实现,使这个想法更清晰 - 显然你知道,如何实现它)
class SingletonFactory
{
template<typename T>
static T * GetInstance()
{
return T.GetInstance();
}
};
class Base
{
friend class SingletonFactory;
private:
static Base * GetInstance()
{
// ...
}
protected:
Base()
{
}
};
class Derived : public Base
{
friend class SingletonFactory;
private:
static Derived * GetInstance()
{
}
protected:
Derived()
: Base()
{
}
};
// (...)
Derived * d = SingletonFactory::GetInstance<Derived>();
尽管有黑客/破解它可以实现。更好地改变设计,因为这个要求看起来不自然。 – iammilind 2013-03-20 06:14:14
我同意@iammilind - 是否需要这样的事情? – 2013-03-20 06:23:57