将参数传递为BSTR或_bstr_t?

时间:2015-11-13 12:53:52

标签: c++ com

我的COM实现类将参数作为BSTR(和VARIANT*),这些参数在内部传递。通常我们会将它们转换为std::stringstd::wstring,但有时它们会变得很有用,并会被发送回另一个COM调用。

在这些情况下,最好是传递原始COM类型,还是将它们包装在辅助类中,如_bstr_t_variant_t

1 个答案:

答案 0 :(得分:2)

如果您没有对BSTR做任何特殊处理,只是将其传递给另一个方法,那么您不必将其包装。您可以将BSTR视为不透明指针。

_bstr_t(或CComBSTR是Visual Studio的另一个包装提供程序)在您需要分配BSTR并且不想自己管理内存(并确保您没有泄漏内存)时很有用,但它们不是强制性的

PS:除非我需要输出 BSTR到不懂Unicode的程序,否则我永远不会使用中介std:string来传递BSTR因为我会冒失去信息的风险。 std:wstring更好。