Tôi gặp vấn đề rất lạ với trò chơi xâm lược không gian tôi đang nghiên cứu. Về cơ bản tôi nhận được lỗi vi phạm quyền truy cập:0xC0000005: Truy cập vi phạm vị trí đọc 0x00000000
Unhandled exception at 0x5edad442 (msvcr100d.dll) in SpaceInvaders.exe: 0xC0000005: Access violation reading location 0x00000000.
khi tôi bao gồm đoạn mã bên dưới. visual studio đưa tôi đến "strcmp.asm" khi gỡ lỗi. Lưu ý rằng Im không sử dụng strcmp() trong bất kỳ mã nào của tôi. Có điều gì sai với mã, hay đây có phải là vấn đề nằm ngoài phạm vi của những gì tôi đã đưa vào không? Nhờ sự giúp đỡ
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 constructor:
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 Constructor
MovingObject::MovingObject(const char *pic, int x, int y, int w, int h):picture(pic), positionX(x), positionY(y), width(w), height(h) {};
Hiển thị mã bên trong hàm tạo của Invader –
Thông báo lỗi gợi ý rằng đây là một tham số con trỏ rỗng, nhưng tôi không thể thấy điều này sẽ xảy ra ở đâu trong mã của bạn. Ngoài constructor Invader, vui lòng chỉ cho chúng ta biết nơi/cách mà mảng invaders được khởi tạo. Các nhà xây dựng bản sao của Invader có thể là thú vị là tốt, nếu nó có một. – Medo42
Tôi vừa cập nhật OP với các nhà thầ[email protected], mảng xâm lược vừa được khởi tạo dưới dạng biến toàn cầu: "Invader Invaders [55];" – Milk