class Texture : public GameObjectComponent

{

public:

Texture();

~Texture();


void SetTexture(MeshTexture* pTexture, TEXTURE_TYPE textureType);


/**

@brief 해당 텍스쳐 타입의 텍스쳐를 반환한다.

@return 텍스쳐가 존재하지 않을 경우 nullptr 반환

*/

MeshTexture* GetTexture(TEXTURE_TYPE textureType);


private:

std::map<TEXTURE_TYPE,std::shared_ptr<MeshTexture>> m_tblTextures;

};



지금 설계중인 클래스 중 하나인데


GetTexture 가 nullptr 일 경우 디폴트 값을 쓰고 싶음.

그렇다면 호출하는 쪽에서 바로 Texture::DefaultTexture 만 참조하면

디폴트 값을 가진 MeshTexture* 객체를 얻게 하고 싶거든


그런데 문제는 static 변수로 만들어서 하자니 MeshTexture는 객체 생성 후에 디폴트 값으로 초기화 해줘야 함...

즉 어딘가에서 static MeshTexture* DefaultTexture에 대해 최소 한번 초기화 해주는 루틴이 필요하단거임

그리고 난 이걸 원하지 않어.


그래서 두번째로 생각한게

class DefaultTexture : public MeshTexture

로 아예 상속해버려서 생성자에서 디폴트값으로 초기화 하는 방법.


이건 작동 할거 같은데 쓸데없이 클래스가 하나 늘어나고 "객체"로서 쓰인다는 개념이 아니게 됨.


뭔가 더 좋은 방법 없을까???