我在此方法中的现有程序(c++ 自动生成的代码)中发现了一个错误:
void _CallStyle _WFObjectVarAsStringExtractEFAgent::LoadValue(Pointer __VarAddress, aType theVarType) {
absolute(tpPointer, VarAddress, __VarAddress);
aLightObject Obj = nil;
Obj = aLightObject(*VarAddress);
if ( Obj == Nil ) {
this->SetValue("");
} else {
this->SetValue(Obj->StringExtract(this->ExtractKind, this->ExtractParam, 0));
}
this->Lock();
if ( Obj == Nil ) {
this->Disable();
} else {
this->Enable();
}
}
有时,该行也Obj = aLightObject(*VarAddress);
不会返回一个有效的aLightObject
实例Nil
(而是一个损坏的aLightObject
实例)。
因此,在下一行if ( Obj == Nil ) {
中,我们输入了else
bloc,程序在尝试执行Obj->StringExtract
调用时失败。
我如何测试Obj
实例是否有效?