아까 자반칼치횽이 일러준 부분이기도 하고,
예전부터 단일체 클래스의 상속의 위험성에 대해서도 논한 적이 많았는데,

이렇게 하면 되지 않을까 싶어.

코드를 전부 여기에 가져오긴 귀찮고 코드패드로 대체.

http://codepad.org/QvDrRHZm

SingletonHolder란 클래스를 새로 만들었는데,
보다시피 단일체인 클래스에서 계통 클래스들 중에서 단 하나만 인스턴스가 만들어질 수 있도록 하는 클래스야.

계통 구조에서 최상위 클래스를 찍어주면 되겠지.



저 코드에서는 Foo가 먼저 생성이 되었기 때문에, Bar::GetInstance()가 Foo의 인스턴스를 반환하는 거고,

만약에 Foo::GetInstance() 이전에 Bar::GetInstance()를 해버리면, Foo::GetInstance()는 Bar의 인스턴스를 반환하겠지.


혹시 좀 더 엄격하게 하려면, 이미 인스턴스가 있을 때, 다른 계층의 클래스에서 GetInstance()가 호출 되었을 때 assert를 해도 될 테고.