如何在超类中设置CComPtr上的接口?

时间:2011-04-20 09:03:19

标签: c++ visual-c++ com atl dcom

我想尝试修改我的代码以使用超类来处理创建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);
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

template<class Interface> class CSuperClass { 
    // ...
    void CreateSmartPointer(CString class) {
        // ...
        CComPtr<Interface> spInterface;
        // ....