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]))
与类型为var
的IDirect3DSurface9*
不兼容。
至于您的代码真正应该是什么,我不能肯定地说,但是您将需要删除一个间接级别。