У меня есть часть 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 не является указателем на выходную переменную, или потому что в этом подходе есть что-то неправильное.
Есть ли преимущество в использовании ссылки на указатель вместо указателя на указатель для параметров out?