Компонент WinRT C ++ / CX ComPtr против родного указателя

Я смотрю на некоторый код Direct3D для WinRT и замечаю там «классы ref», используя «ComPtr<ID3D11Device1>» вместо «ID3D11Device1*Msgstr «Так что мой вопрос: ДОЛЖЕН ли вы использовать» ComPtr «в» ref-классе «или вы можете использовать вместо него» родной указатель «??

Прямо сейчас я использую собственный указатель в классе ref, так как мои файлы c ++ также используются для компиляции Managed C ++. Но иногда я получаю странное поведение в WinRT и думаю, что это может иметь какое-то отношение к ComPtr.

2

Решение

Не обязательно использовать, но часто очень удобно.

Это интеллектуальный указатель подсчета ссылок для объектов COM, который управляет временем жизни объекта COM. Если вы используете необработанный указатель, вы часто не можете гарантировать, что COM-объект все еще жив. Если вы думаете, что это может быть связано с вашей проблемой (например, вы получаете нарушение доступа при вызове COM-методов), то имеет смысл использовать их. В любом случае, потеря производительности для подсчета ссылок ничто по сравнению с вызовом метода COM.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]