私の基本クラスは保護されたc'torを持つSingletonです。今、私はそれから別のクラスを派生させることができますが、派生クラスの関数内でその Base クラスのインスタンスを作成することはできません。これは、私の設計による予想される動作です。しかし、C++ 標準で正しいのか、それともコンパイラ固有の動作だけなのかを知りたいです。(将来このコードを移植したい場合に問題に直面しないようにするため)
class Singleton
{
protected:
Singleton() {}
public:
Singleton * GetInstance()
{
static Singleton* InstanceCreated = NULL ;
if (!InstanceCreated)
InstanceCreated = new Singleton ;
return InstanceCreated ;
}
};
class Deringlton : public Singleton
{
public:
Deringlton()
{
Singleton * pSing ;
// pSing = new Singlton ; // Cannot create object of singlton
// (Despite class is derived from singlton)
}
};