Класс ATL CComBSTR имеет BSTR
член m_str
и operator BSTR ()
который возвращается m_str
,
Теперь, если функция принимает BSTR *
в качестве аргумента, можно ли передать адрес CComBSTR
?
CComBSTR path;
// signature is IzFileFinder::GetDir(CY index, LPBSTR path)
fileFinder->GetDir(INT64toCURRENCY(i), &path);
Компилятор не жалуется, но если он действительно в порядке, почему он работает?
Вы не передаете адрес CComBSTR
, но адрес его m_str
член. CComBSTR
случается, чтобы обеспечить, среди прочего, operator&()
это возвращает &m_str
,
Других решений пока нет …