다음과 같은 인터페이스 인스턴스 생성 방법을 만들었습니다.CreateInstance 루틴을위한 템플릿 함수
static IFBIndexItem* CreateFBIndexItemPtr()
{
IFBIndexItemPtr pFBComWrapper;
HRESULT hr = pFBComWrapper.CreateInstance(__uuidof(FBIndexItem));
if (FAILED(hr)) {
throw new _com_error(hr);
}
return pFBComWrapper;
}
잘 작동하지만 여러 인터페이스가 있기 때문에 템플릿 방법을 만들고 싶습니다. 결과적으로 여기에있는 메소드가 있지만 "Class not registered"예외가 발생합니다.
template<class T>
static T* CreateInterfacePtr()
{
_com_ptr_t <_com_IIID<T, &__uuidof(T)>> pFBComWrapper;
HRESULT hr = pFBComWrapper.CreateInstance(__uuidof(T));
if (FAILED(hr)) {
throw new _com_error(hr);
}
return pFBComWrapper;
}
왜 제대로 작동하지 않는지 궁금합니다. 감사.
는 같은 함수를 호출 할 필요가 있음을 기억하십시오. 오류가 무엇입니까? – iammilind