(относится к этому вопросу .)
У меня есть базовый класс Base
и два производных класса, Der1
и Der2
.(См. Связанный вопрос для базовой реализации. У каждого также есть ряд открытых свойств.) В моей программе я создаю массив Base
, например:
Base *array[10];
int count = 0; // program-wide count of how many objects are in the array
Затем позже я заполняю его экземплярами.Der1
и Der2
следующим образом:
Der1 d = Der1();
d.x = 0; // Filling in public properties
d.y = 1;
d.z = 3;
array[count] = &d;
count++;
Почти идентичный код используется для Der2
.
Много позже я использую массив для вызова функций, определенных вэти классы:
int result = array[i]->SomeFunction(x, y);
Мой код компилируется нормально, но когда я пытаюсь его запустить, я получаю «Необработанное исключение по адресу 0x00232d60 в program.exe: 0xC000005: Место чтения нарушения доступа 0x04064560.»
Когда я смотрю на объект в массиве, к которому я пытаюсь получить доступ, все значения свойств равны 0,0000 вместо того, что они должны быть.Есть также два массива double
-типа, и похоже, что последние несколько элементов неинициализированы («1.572398880752e-311 # DEN» или «-9.2559631349317831e + 061» или аналогичные).
слишком долго занимался .NET и забыл многое из того, что я знал об указателях, который, как я предполагаю, является источником моей проблемы ... Какие-нибудь предложения о том, как я могу исправить эту ошибку?