3

ComPtr<ID3D11Device1>WinRT の Direct3D コードを見ていると、" " の代わりに " "を使用している "ref クラス" があることに気付きましたID3D11Device1*。私の質問は、「参照クラス」で「ComPtr」を使用する必要がありますか、または代わりに「ネイティブポインター」を使用できますか??

私のC++ファイルはマネージC++のコンパイルにも使用されるため、現在、refクラスでネイティブポインターを使用しています。しかし、ときどき WinRT で奇妙な動作が発生し、ComPtr と関係があるのではないかと考えます。

4

1 に答える 1

4

使用する必要はありませんが、多くの場合非常に便利です。

COM オブジェクトの有効期間を管理するのは、COM オブジェクトの参照カウント スマート ポインターです。生のポインターを使用すると、COM オブジェクトがまだ生きていることを保証できないことがよくあります。これが問題に関連している可能性があると思われる場合 (たとえば、COM メソッドを呼び出すときにアクセス違反が発生するなど)、それらを使用することは理にかなっています。とにかく、参照カウントのパフォーマンスの低下は、COM メソッドの呼び出しと比較して何もありません。

于 2012-09-23T11:38:21.753 に答える