WinRT C ++ / CX组件ComPtr与本机指针

时间:2012-09-23 10:36:45

标签: c++ components microsoft-metro windows-runtime

我正在查看WinRT的一些Direct3D代码,并注意那里的“ref classes”使用“ComPtr<ID3D11Device1>”而不是“ID3D11Device1*”。所以我的问题是你必须在“ref class”中使用“ComPtr”,还是可以使用“原生指针”?

现在我在ref类中使用本机指针,因为我的c ++文件也用于编译托管C ++。但有时我在WinRT中会遇到奇怪的行为并认为它可能与ComPtr有关。

1 个答案:

答案 0 :(得分:3)

没有必要使用,但通常非常方便。

它是COM对象的引用计数智能指针,用于管理COM对象的生命周期。如果使用原始指针,则通常无法保证COM对象仍处于活动状态。如果您认为这可能与您的问题有关(例如,在调用COM方法时遇到访问冲突),那么使用它们是有意义的。无论如何,引用计数的性能损失与COM方法调用无关。