FullName - это свойство, и вы выполняете операцию GET (вероятно, что-то подобное в IDL: get_FullName ([out, retval] BSTR * o_sResult)). Такая операция работает нормально с нулевыми значениями.
Я предполагаю, что contactItem
умный указатель указывает на любой допустимый COM-объект. В таком случае операция форматирования, выполняемая ATLTRACE
, может вызвать проблему. Внутренне он ведет себя, вероятно, как стандартная sprintf("",args...)
функция.
Чтобы избежать таких проблем, просто сделайте что-то вроде ниже:
ATLTRACE(_T("\tContact name: %s\n"),
_bstr_t(contactitem->FullName)?static_cast<LPCTSTR>(contactitem->FullName):"(Empty)")