CreaeInstance 想返回接口函数的指针,为什么必须定义成双指针类型啊。一直理解不了HRESULT IObjectContext::CreateInstance (
    REFCLSID rclsid,
    REFIID riid,
    LPVOID FAR* ppvObj
);大家谁能给我解释一下啊

解决方案 »

  1.   

    参数是值传递阿,如果要返回int的值,参数就要用int*的。如果要返回(int*)的值,就要用(int*)*的类型阿。
      

  2.   

    楼上的分析是正确的,COM中一般用接口指针,要想获得一个接口指针,就要用指向接口指针的指针。
    其实可以近似地把接口指针看做是我们常用的对象指针。
      

  3.   

    你可以自己写一段类似代码进行指针赋值,就会明白了.
    char* pSz = NULL;
    1.  GetNewCharArray(char* pSzTmp);
    2.  GetNewCharArray(char** ppSzTmp);
    自己实现这两个函数吧.其中第二个函数才有作用.如果你只是传了一级指针,那么实际是此指针的copy版,所以对copy版的任何改动都不会影响其原值.如果传的是二级指针,那么是此指针的指针,即其本身,在这种情况下,对其改动,才会达到预想目的.