IDirect3DSurface9 *var = NULL;

IDirect3DSurface9 *** ret;


我想将var取消引用的值分配给ret指向的变量。

我做了以下事情:

(*(*(ret[0]))) = var;


我觉得这是正确的C ++语法。但是为什么我得到如下编译错误:


  错误C2679:二进制'=':未找到需要右手操作的运算符
  类型为“ IDirect3DSurface9 *”的操作数(否则不可接受)
  转换)。


正确的语法是什么?

最佳答案

您已取消引用指针3次。一次是将其视为数组并使用索引[0],然后是*运算符的两倍。为了与var兼容,您应该仅取消引用两次。

更明确地说,让我们细分一下:


ret具有类型IDirect3DSurface9***
ret[0]具有类型IDirect3DSurface9**
*(ret[0])具有类型IDirect3DSurface9*
*(*(ret[0]))具有类型IDirect3DSurface9


显然,得出的结论是*(*(ret[0]))与类型为varIDirect3DSurface9*不兼容。

至于您的代码真正应该是什么,我不能肯定地说,但是您将需要删除一个间接级别。

09-06 17:28