私が取り組んでいる宇宙侵略ゲームに非常に奇妙な問題があります。基本的に私は以下のコードを含めると、アクセス違反エラー:0xC0000005:アクセス違反の読み取り場所0x00000000
Unhandled exception at 0x5edad442 (msvcr100d.dll) in SpaceInvaders.exe: 0xC0000005: Access violation reading location 0x00000000.
が表示されます。ビジュアルスタジオは、デバッグ時に私を "strcmp.asm"に連れて行きます。私のコードでは、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(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のコピーコンストラクタは面白いかもしれません。 – Medo42
OPをコンストラクタで更新しました。@Medo、侵略者配列は、グローバル変数として "Invader invaders [55];" – Milk