0

我想尝试修改我的代码以使用超类来处理创建 CComPtr,但我不确定如何将类传递给 CComPtr 来创建,即在

void CSuperClass::CreateSmartPointer(CString class, Interface interface)
{
   CLSID clsid;
   hr = CLSIDFromProgID(class, &clsid);
   CComPtr<interface> spInterface;
   hr = spInterface.CoCreateInstance(clsid, 0, CLSCTX_ALL);
}


void CSubClass::Init()
{

    CreateSmartPointer("MYServer.MyClass", xxx);
}

void CSubClass2::Init()
{

    CreateSmartPointer("MYServer2.MyClass2", xxx);
}
4

2 回答 2

0

根据您想要实现的目标,模板可以完成这项工作:

template<class Interface> class CSuperClass { 
    // ...
    void CreateSmartPointer(CString class) {
        // ...
        CComPtr<Interface> spInterface;
        // ....
于 2011-04-20T11:56:37.763 回答
0

我认为您可以使用IIDFromString函数来获取接口 ID,然后QueryInterface对其进行操作。在上创建 COM 对象IUnknown,然后QueryInterface对新解决的IID.

于 2011-04-20T11:05:00.590 回答