Windows ImagingComponentライブラリを処理するいくつかのレガシーC++コードを調べていますが、これを観察しました。
void setProperties(IPropertyBag2* const pBag)
{
pBag->Write(...);
}
void other_function()
{
CComPtr<IPropertyBag2> pBag;
//Code to initialize pBag
setProperties(pBag);
}
このsetProperties
メソッドは、一連のプロパティをプロパティバッグに書き込むだけです。適切な型キャスト演算子を呼び出すと思うので、コードはコンパイルされて正常に実行されます。
私の質問は、そのようなインターフェースが推奨されているのか、それともポインターを渡すためのより良い方法があるのかということです。たとえば、署名が次のように変更された場合、(安全性/パフォーマンスの点で)違いはありますか?
void setProperties(const CComPtr<IPropertyBag2>& pBag)