I have a bit of COM code that uses interface pointers. The original author of the code implemented functions that return an interface pointer like this:
HRESULT Query ( IN BSTR sQuery, OUT IEnumWbemClassObject* &pEnumerator ); // (1)
instead of the traditional
HRESULT Query ( IN BSTR sQuery, OUT IEnumWbemClassObject** ppEnumerator ); // (2)
The function (1) is called like this:
hRes = Query ( sQuery, pEnumerator ); // (3)
which definitely looks wrong but it works fine. I'm not sure if I'm just picking up this line because the out parameter is not a pointer to the output variable or because there's something wrong with this approach.
Is there an advantage to using a reference-to-pointer instead of a pointer-to-pointer for out parameters?
T*
andT&
, then just understandT
can be a pointer-type. – Satirist