У меня очень странная проблема с игрой космических захватчиков, над которыми я работаю. В основном я получаю ошибку нарушения доступа:0xC0000005: Место для обнаружения нарушения доступа 0x00000000
Unhandled exception at 0x5edad442 (msvcr100d.dll) in SpaceInvaders.exe: 0xC0000005: Access violation reading location 0x00000000.
, когда я включаю фрагмент кода ниже. визуальная студия ведет меня к «strcmp.asm» при отладке. Обратите внимание, что Im не использует strcmp() в любом из моего кода. Что-то не так с кодом, или это проблема, выходящая за рамки того, что я включил? Спасибо за любую помощь
const char* invarray[] = {"invader0.png", "invader1.png", "invader2.png", "invader3.png", "invader4.png"};
int i=0;
//Creates 55 invaders
for (int y=0; y<250; y+=50){
for (int x=0; x<550;x+=50){
Invader inv(invarray[y/50], x+50, y+550, 15, 15, 1, false, 250);
invaders[i] = inv;
}
}
Invader конструктор:
Invader::Invader(const char *pic, int x, int y, int w, int h, bool dir, bool des, int point) : MovingObject(pic, x, y, w, h) , direction(dir), destroyed(des), b(0), points(point){};
MovingObject Конструктора
MovingObject::MovingObject(const char *pic, int x, int y, int w, int h):picture(pic), positionX(x), positionY(y), width(w), height(h) {};
Показать код внутри конструктора Invader –
Сообщение об ошибке указывает на то, что это разыменование нулевого указателя, но я не вижу, где это произойдет в вашем коде. Помимо конструктора Invader, пожалуйста, покажите нам, где и как инициализируется массив захватчиков. Конструктор копирования Invader может быть интересен, если он есть. – Medo42
Я только что обновил OP с помощью конструкторов[email protected], массив invader был просто инициализирован как глобальная переменная: «Invader invaders [55];» – Milk