我以前遇到过这个问题,但从未出现过这种情况。我完全困惑。如问题所述,我得到运行时错误“对象引用未设置为对象的实例”。使用调试工具,我想我已经精确定位问题这一行:托管C++,未将对象引用设置为对象的实例
dataFileLocation = path;
整个功能是在这里:
void DATReader::SetPath(String^ path)
{
if(!File::Exists(path))
{
MessageBox::Show("DATReader (missing dat file: \n"+path+"\n)", "Error", MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
return;
}
dataFileLocation = path;
}
dataFileLocation
这里声明,但没有分配给它:
ref class DATReader
{
private:
System::String^ dataFileLocation;
// ...
}
现在我知道我得到了错误的原因是因为dataFileLocation
被分配到nothi NG。但我在分配时遇到问题。当我添加= 0;
时,它不会生成,因为它是一个ref类。当我尝试在构造函数中将它分配给= 0;
时,它试图将它从System::String^
转换为int
,然后大叫我。如果我将它分配给= gcnew String("");
它会生成,但会引发相同的运行时异常。
我不明白,我读错了调试器,这根本不是问题的根源吗?我刚刚开始使用托管代码,因此我很困惑:\
你确定它不是'path'是null吗? – ildjarn
路径为空应该不会导致该行发生错误 - 如果错误位于不同的行上,则可能是正确的。 –