为什么ComPtr函 数返回一个不同的值,然后&?

问题描述 投票:-2回答:2

为什么&(ComPtr.Get())!= ComPtr.GetAddressOf()?

我试图将ID3D11ShaderResourcesView *传递给函数,并将其转换为**以在CreateShaderResourceView中使用,但是它无法正常工作。

我意识到,这是3个论点中的问题。

c++ com directx
2个回答
0
投票

您正在使用ComPtr.Get()返回的指针的地址。这与指向对象的指针完全不同。


0
投票

ComPtr.Get()返回保留的指针按值,因此&(ComPtr.Get())正在获取保留的指针的副本的地址。

[ComPtr.GetAddressOf()返回保留的指针本身的地址,而不是它的副本。

Had ComPtr.Get()返回保留的指针通过引用,然后&(ComPtr.Get())将采用原始指针的地址,而不是副本的地址。但它不会返回引用。

© www.soinside.com 2019 - 2024. All rights reserved.