(com)클래스 팩토리의 CreateInstance 구현 코드를 알고 싶습니다.
글쓴이: inviolable / 작성시간: 금, 2014/07/18 - 6:42오후
저는 Visual c++ 6 2nd Edition (김용성 저 영진닷컴 출판)이라는 책을 가지고 있는데 이 책이 com에 대해서도 설명을 하고 있는데요.
이 책에 클래스 팩토리의 CreateInstance 구현 코드를 보았는데, CoClass자체가 1개밖에 없는 그런 클래스(?? 어떤 용어를 써야할지 모르겠네요)라 그런지 그냥 하나 있는 Coclass를 메모리 할당하고 인터페이스 포인터를 넘겨주는 그런 코드더군요.
그런데 실질적으로 CoClass가 하나밖에 없으면 클래스 팩토리의 의미는 없잖습니까??? 따라서 클래스 팩토리가 최소 2개 이상인 클래스(??)에서 CreateInstance 메소드가 어떻게 구현되는지를 알아야 제대로 아는 거라는 생각이 드네요.
책에 있는 CreateInstance의 코드는 다음과 같습니다.
HRESULT CCalculatorClassFactory::CreateInstance(IUnknown* pUnkOuter, REFIID riid, void** ppv) { HRESULT hrRet; CCalculatorImpl* pCalculator; *ppv = NULL; pCalculator = new CCalculatorImpl; if(pCalculator == NULL) return E_OUTOFMEMORY; hrRet = pCalculator->QueryInterface(riid, ppv); if(FAILED(hrREt)) delete pCalculator; return hrRet; }
Forums:
댓글 달기