当作为参数传递时,它如何将 _bstr_t 转换为 BSTR?
举一个简单的例子:
_bstr_t smartString(L"MyString");
Process(smartString); // takes BSTR.
最初我以为 _bstr_t 有一个从 _bstr_t 转换为 BSTR 的 BSTR 运算符,但是查看 msdn 没有定义这样的运算符。
将 _bstr_t 传递给 BSTR 参数或将 _variant_t 传递给 VARIANT 时,它是如何工作的?
Taking a simple example:
_bstr_t smartString(L"MyString");
Process(smartString); // takes BSTR.
Initially I thought _bstr_t has a BSTR operator converting from _bstr_t to BSTR, but looking at msdn there is no such operator defined.
How does it work when passign _bstr_t to BSTR parameter or _variant_t to VARIANT?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
BSTR
被typedef
编辑为WCHAR*
(wtypes.h 文件),后者被typedef
编辑为wchar_t*
(winnt.h 文件)和_bstr_t
具有运算符 wchar_t*()
成员变量。所以编译器只使用该运算符进行转换。BSTR
istypedef
ed to beWCHAR*
(wtypes.h file) and the latter istypedef
ed to bewchar_t*
(winnt.h file) and_bstr_t
hasoperator wchar_t*()
member variable. So the compiler just uses that operator for conversion.如果我正确理解你的问题,你想调用一个需要 BSTR* 的方法。没有隐式转换。相反,请使用 GetAddress() 参数进行转换。
If I understand your problem correctly, you want to call a method that expects BSTR*. There is no implicit conversion. Instead, use the GetAddress() parameter for the conversion.