IXMLDOMElementPtr pElement->text = "..." 會失敗嗎?

Can IXMLDOMElementPtr pElement->text = "..." fail?

本文关键字:pElement- gt text IXMLDOMElementPtr      更新时间:2023-10-16

伪代码如下:

IXMLDOMElementPtr pElement;
pElement = pXMLDom->createElement("...");
pElement->text = "..."; // My question is can this step fail (such as because of memory restrain)?

更多,请帮助我了解"="操作员的内部工作原理!我对C很熟悉,但我是C++/Java的新手。

谢谢!

"="运算符的内部工作原理基于特定的Microsoft C++扩展,与遗留的C++运算符重载无关。

参见属性(C++)

当编译器在上看到用此属性声明的数据成员时成员选择运算符("."或"->")的右侧,它转换对get或put函数的操作,取决于表达式是一个l值或r值。

使用#import从DLL导入COM定义(作为MSXML?.DLL)时,会创建一个TLH文件(C++标头),该文件反映与DLL关联的类型库的内容。

在该TLH中,您将找到从IDispatch继承的结构IXMLDOMNode的声明,其行为:

__declspec(property(get=Gettext,put=Puttext))
_bstr_t text;

GettextPuttext方法在导入期间生成的TLI文件(内联函数)中定义。

Puttext方法为:

inline void IXMLElement::Puttext ( _bstr_t p ) {
HRESULT _hr = put_text(p);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
}

put_text方法是通过接口指针进行的原始调用,并且对于此类调用,一如既往地返回HRESULT。所以,是的,理论上,这一步可能会失败。