Почему функция ComPtr возвращает другое значение, чем &? - PullRequest
0 голосов
/ 11 января 2020

Почему & (ComPtr.Get ())! = ComPtr.GetAddressOf ()?

Я попытался передать ID3D11ShaderResourcesView * для функционирования и преобразовать его в ** для использования в CreateShaderResourceView, но это не сработало правильно .

Я понял, что проблема в 3 аргументе.

Ответы [ 2 ]

0 голосов
/ 11 января 2020

ComPtr.Get() возвращает удерживаемый указатель по значению , поэтому &(ComPtr.Get()) принимает адрес копии удерживаемого указателя.

ComPtr.GetAddressOf() возвращает адрес самого удержанного указателя, а не его копию.

Если бы ComPtr.Get() возвратил удержанный указатель по ссылке , тогда &(ComPtr.Get()) получит адрес исходного указателя , а не копия. Но это не возвращает ссылку.

0 голосов
/ 11 января 2020

Вы берете адрес указателя, который возвращает ComPtr.Get(). Это полностью отличается от указателя на объект.

...