我的COM实现类将参数作为BSTR (和VARIANT*),这些参数在内部传递。通常,我们会将它们转换为std::string或std::wstring,但有时它们会被传递回另一个COM调用。
在这些情况下,最好是传递原始的COM类型,还是将它们封装在助手类中,比如_bstr_t 和 _variant_t**?**。
发布于 2015-11-13 23:55:57
如果您对BSTR没有什么特别之处,而只是将它传递给另一个方法,那么您就不必包装它。您可以将BSTR视为不透明指针。
_bstr_t (或者CComBSTR是Visual的另一个包装器提供程序)在您需要分配BSTR并且不希望自己管理内存(并确保您没有泄漏内存)时非常有用,但它们不是必需的。
PS:除非我需要将BSTR输出到一个不懂Unicode的程序,否则我永远不会使用中间std:string来传递BSTR,因为我会冒丢失信息的风险。std:wstring更好。
https://stackoverflow.com/questions/33693204
复制相似问题