IX *pIX = null;
HRESULT gr = ::CoCreateInstance(CLSID_Component1,
                NUll,
CLSCTX_INPROC_SERVER,
IID_IX,
(void**)&pIX);
if(SUCCEEDED(hr))
{
pIX->Fx();
pIX->Release();
}能解释一下 void**)&pIX 的意思吗?

解决方案 »

  1.   

    CoCreateInstance(CLSID_Component1,
                    NUll,
    CLSCTX_INPROC_SERVER,
    IID_IX,
    (void**)&pIX);
    =====================
    根据要求的IID 返回接口
    (void**)&pIx 强制转换
      

  2.   

    void**)&pIX 
    =======
    pIX本身是一个地址,&pIX就是取这个指针的指针。它相当于IX **(如果pIX指向的对象叫IX的话)(void**), 就是把它强制转换为void **, 使编译时不报错。当然了,IX **和void **可以说是同一回事。所以这样转化没有任何问题。
      

  3.   

    请注意参数要求类型。在定义时候, IX *pIX = null;, pIX 本身是一个指针,
    所以在 对 pIX & 操作后, 得到是2级指针, 类型为 IX ** ,
    然后强制转换该 2 级指针为 void **。这个转换的目的,
    是因为 CoCreateInstance 方法要求参数的类型为 void 的...