Я сталкивался с этой проблемой раньше, но никогда в такой ситуации. Я полностью сбит с толку. Как говорится в вопросе, я получаю ошибку во время выполнения «Ссылка на объект не установлена на экземпляр объекта». Используя инструменты отладчика, я думаю, что я определил проблему в этой строке:
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
ничего не назначено. Но у меня проблемы с его назначением. Когда я добавлю = 0;
к нему, он не будет собираться, потому что это класс ref. Когда я пытаюсь присвоить его = 0;
в конструкторе, он кричит на меня за попытку преобразовать его из System::String^
в int
. Если я присваиваю его = gcnew String("");
, он строит, но выдает то же исключение во время выполнения.
Я не понимаю, я неправильно читаю отладчик, и это вовсе не является источником проблемы? Я только недавно начал использовать управляемый код, поэтому я в замешательстве: \