现在新看《COM原理与应用》,发现MFC(貌似)是用指向指针的指针来获得新的接口指针,之前我学过DirectX,也是基于C++的,用的是微软的SDK,我发现也是这样的,我感觉不是很好理解。在我看来,一重指针就可以了,为什么要双重指针了。附上一个例子:HRESULT CDictionary::QueryInterface(const IID& iid , void** ppv)
{
if (iid == IID_IUnknown)
{
*ppv = (IDictionary*)this;
((IDictionary*)(*ppv))->AddRef();
}
.....
}我个人感觉上面的代码可以用 void* pv 代替 void** ppv,并在代码中做相应替换也是可以完成同样功能的,为什么非得用双重指针呢,求大神解惑。指针C++指向指针的指针VC
{
if (iid == IID_IUnknown)
{
*ppv = (IDictionary*)this;
((IDictionary*)(*ppv))->AddRef();
}
.....
}我个人感觉上面的代码可以用 void* pv 代替 void** ppv,并在代码中做相应替换也是可以完成同样功能的,为什么非得用双重指针呢,求大神解惑。指针C++指向指针的指针VC
你可以这样试一下:
在函数里对PV赋值,函数结束返回后看看PV是否赋值成功很容易犯的错误