8

インターフェイス ポインターを使用する COM コードが少しあります。コードの元の作成者は、次のようなインターフェイス ポインターを返す関数を実装しました。

HRESULT Query ( IN BSTR sQuery, OUT IEnumWbemClassObject* &pEnumerator ); // (1)

従来の代わりに

HRESULT Query ( IN BSTR sQuery, OUT IEnumWbemClassObject** ppEnumerator ); // (2)

関数 (1) は次のように呼び出されます。

hRes = Query ( sQuery, pEnumerator ); // (3)

これは間違いなく間違っているように見えますが、正常に動作します。out パラメーターが出力変数へのポインターではないため、またはこのアプローチに問題があるため、この行を取り上げているだけなのかどうかはわかりません。

出力パラメータにポインタからポインタへの代わりに参照からポインタを使用する利点はありますか?

4

4 に答える 4

1

これは、ポインターと参照が通常の C++ 実装で同じように表されるためです (これは実装の詳細であり、標準の一部ではありません。参照へのポインターではなくポインターへの参照でもあるため、参照へのポインターを作成することはまったく許可されていません。

于 2011-12-07T23:31:46.700 に答える