インターフェイスインスタンスを作成するために以下のメソッドを作成しました。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