Массивы с C ++ CLR - PullRequest
       22

Массивы с C ++ CLR

1 голос
/ 03 апреля 2012

как мы все знаем, объявление массива довольно просто

type name[size];

, но когда я компилирую свой C ++ как CLI / Winform, он не работает, я обнаружил следующий на MSDN, который объясняет этот новый синтаксис, но по некоторым причинам я все еще получаю странные ошибки.

Когда я объявил массив следующим образом, он без проблем скомпилирован, но когда когда-либо манипулируют массивом, происходит сбой программы.(Я проверил это на простой программе с кнопкой, все той же)

array<int>^ aiArray; //declaration - no problem
aiArray[0] = 5; //after executing it the program crash

Вот ошибка, которую я получаю после сбоя:

An unhandled exception of type 'System.NullReferenceException' occurred in test.exe
Additional information: Object reference not set to an instance of an object.

1 Ответ

4 голосов
/ 03 апреля 2012

Вам нужно создать массив, а не просто объявить локальную переменную.Попробуйте это:

array<int>^ aiArray;
aiArray = gcnew array<int>(10);
aiArray[0] = 5;

Если вы знакомы с C #, это должно выглядеть знакомо.Если вы знакомы с C ++, а не с C #, вот что происходит: то, что у вас есть, примерно эквивалентно int* aiArray; в неуправляемом C ++.Вам нужно будет сделать aiArray = new int[10];, прежде чем вы сможете использовать неуправляемый массив.

...