下面显示的源代码是检查 Document 类对象的成员的一部分。我们试图创建一个值类的对象,即“memberObject”,并将对象引用存储到“_value”值引用私有成员变量中。查看输出,我们可以看到对象的类型是 3(对象)。但是,使用 memberObject 分配 _value 引用变量后,输出显示类型更改为 0 (NULL)。我们希望这样的类型更改不应该发生。你能解释一下为什么会这样吗?
for (Value::MemberIterator itr = _document.MemberBegin(); itr != _document.MemberEnd(); itr++)
{
_itr = itr;
_name = itr->name.GetString();
_objectTypeID = (int)itr->value.GetType();
cout << "Member [" << _name << "] - type is [" << _objectTypeID << "]" << endl;
_typeID = _objectTypeID;
if (itr->value.IsObject())
{
Value& memberObject = _document[_name.c_str()];
cout << "Value type(1): " << memberObject.GetType() << endl;
_value = (Value&)memberObject;
cout << "Value type(2): " << memberObject.GetType() << endl;
}
_st.push(_itr);
parseValue();
_itr = _st.top(); // returns the next element in the stack
_st.pop(); // removes an element from the stack
}
"firmwareSettings": {
"manageFirmware": false,
"firmwareBaselineUri": ""
},
成员 [firmwareSettings] - 类型为 [3]
值类型 (1):3
值类型 (2):0