我的COM实现类将参数作为BSTR
(和VARIANT*
),这些参数在内部传递。通常我们会将它们转换为std::string
或std::wstring
,但有时它们会变得很有用,并会被发送回另一个COM调用。
在这些情况下,最好是传递原始COM类型,还是将它们包装在辅助类中,如_bstr_t
和_variant_t
?
答案 0 :(得分:2)
如果您没有对BSTR做任何特殊处理,只是将其传递给另一个方法,那么您不必将其包装。您可以将BSTR视为不透明指针。
_bstr_t(或CComBSTR是Visual Studio的另一个包装提供程序)在您需要分配BSTR并且不想自己管理内存(并确保您没有泄漏内存)时很有用,但它们不是强制性的
PS:除非我需要输出 BSTR到不懂Unicode的程序,否则我永远不会使用中介std:string
来传递BSTR因为我会冒失去信息的风险。 std:wstring
更好。