Я смотрю на некоторый код Direct3D для WinRT и замечаю там «классы ref», используя «ComPtr<ID3D11Device1>
» вместо «ID3D11Device1*
Msgstr «Так что мой вопрос: ДОЛЖЕН ли вы использовать» ComPtr «в» ref-классе «или вы можете использовать вместо него» родной указатель «??
Прямо сейчас я использую собственный указатель в классе ref, так как мои файлы c ++ также используются для компиляции Managed C ++. Но иногда я получаю странное поведение в WinRT и думаю, что это может иметь какое-то отношение к ComPtr.
Не обязательно использовать, но часто очень удобно.
Это интеллектуальный указатель подсчета ссылок для объектов COM, который управляет временем жизни объекта COM. Если вы используете необработанный указатель, вы часто не можете гарантировать, что COM-объект все еще жив. Если вы думаете, что это может быть связано с вашей проблемой (например, вы получаете нарушение доступа при вызове COM-методов), то имеет смысл использовать их. В любом случае, потеря производительности для подсчета ссылок ничто по сравнению с вызовом метода COM.
Других решений пока нет …