为什么&(ComPtr.Get())!= ComPtr.GetAddressOf()?
我试图将ID3D11ShaderResourcesView *传递给函数,并将其转换为**以在CreateShaderResourceView中使用,但是它无法正常工作。
我意识到,这是3个论点中的问题。
您正在使用ComPtr.Get()
返回的指针的地址。这与指向对象的指针完全不同。
ComPtr.Get()
返回保留的指针按值,因此&(ComPtr.Get())
正在获取保留的指针的副本的地址。
[ComPtr.GetAddressOf()
返回保留的指针本身的地址,而不是它的副本。
Had ComPtr.Get()
返回保留的指针通过引用,然后&(ComPtr.Get())
将采用原始指针的地址,而不是副本的地址。但它不会返回引用。