エラーの原因

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
らいが

エラーの原因

#1

投稿記事 by らいが » 9年前

たびたびすみません。。。またもや以下のようなエラーが出てしまい。対処に困っております
前回のような二重インクルードなどはないと思うのですが、、、。

1870:プログラマブルシェーダーを使用します

2128:フォントの初期化を行います
2171:フォントの初期化は正常に終了しました
2190:文字コードバッファの初期化を行います... 完了しました
GameProg.exe の 0x00b5cae3 で初回の例外が発生しました: 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。
GameProg.exe の 0x00b5cae3 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。
プログラム '[6936] GameProg.exe: ネイティブ' はコード -1073741819 (0xc0000005) で終了しました。


-StageManeger.h-

コード:


#pragma once

#include "Types.h"

class StageManeger
{
public:

	virtual void draw() = 0;
	virtual void next_stage() = 0;
};


-Stage1.h-

コード:


#pragma once

#include "StageManeger.h"
#include "Player.h"

struct Player;

class Stage1 : public StageManeger
{
	int s1_graph;

public:
	Stage1();

	void draw();
	void next_stage(const Player& Pl);
};


-Stage1.cpp-

コード:


#include "DxLib.h"
#include "Stage1.h"
#include "Globals.h"

Stage1::Stage1()
{
	s1_graph = LoadGraph("passer画像/stage1.floor.png");
}

void Stage1::draw()
{
	DrawGraph(0, 0, s1_graph, FALSE);
}

void Stage1::next_stage(const Player& Pl)
{
	if(Pl.pos_x() <= 640){
		currentStage = st2;
	}
}

-main.cpp-

コード:


#include "DxLib.h"
#include "MouseCursor.h"
#include "Globals.h"

bool InitDXLib()
{
	ChangeWindowMode(TRUE);
	SetMainWindowText("passer");

	if( DxLib_Init() == -1 ){
		return false;
	}

	SetMouseDispFlag( FALSE );
	return true;
}

void CleanUpDXLib()
{
	DxLib_End();
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow )
{ 
	if (!InitDXLib()) {
		return -1;
	}	

	MouseCursor *mouseCursor = new MouseCursor();//クラスの初期化
	titleScene = new TitleScene();
	playScene = new PlayScene();
	gameoverScene = new GameOverScene();
	currentScene = titleScene;//現在の画面遷移状態
	currentStage = st1;
	
	SetDrawScreen( DX_SCREEN_BACK );

	while (true) {
		ClearDrawScreen();

		mouseCursor->updateCursorInfo();
		currentScene->draw();//現在のシーンのdraw関数を呼び出す
		currentStage->draw();//現在のステージのdraw関数を呼び出す
		currentScene->update(mouseCursor);//現在のcurrentSceneの中のdraw関数を呼び出す
		currentStage->next_stage();//現在のnext_stage関数を呼び出す

		if( CheckHitKey( KEY_INPUT_BACK ) ){
			break;
		}
		if( ProcessMessage() == -1 ){
			break;
		}

		ScreenFlip();
	}

	//ゲーム終了際、クラスのデリート
	delete titleScene;
	delete playScene;
	delete gameoverScene;
	delete mouseCursor;
	delete currentStage;

	CleanUpDXLib();

	return 0;
}


アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: エラーの原因

#2

投稿記事 by h2so5 » 9年前

st1はどこで初期化されていますか?

らいが

Re: エラーの原因

#3

投稿記事 by らいが » 9年前

gloabls.hの方で*型でメモリは確保していましたが、初期化はできていませんでした、、、。

らいが

Re: エラーの原因

#4

投稿記事 by らいが » 9年前

初期化はできたのですが、

1>c:\users\test\downloads\passer\gameprog\main.cpp(51): error C2143: 構文エラー : ')' が 'const' の前にありません。
1>c:\users\test\downloads\passer\gameprog\main.cpp(51): error C2660: 'StageManeger::next_stage' : 関数に 0 個の引数を指定できません。
1>c:\users\test\downloads\passer\gameprog\main.cpp(51): error C2059: 構文エラー : ')'

このようなエラーがでました。
三つとも満たしているはずなのですが、、、原因がわかりません。

-main.cpp-

コード:


#include "DxLib.h"
#include "MouseCursor.h"
#include "Globals.h"

struct Player;

bool InitDXLib()
{
	ChangeWindowMode(TRUE);
	SetMainWindowText("passer");

	if( DxLib_Init() == -1 ){
		return false;
	}

	SetMouseDispFlag( FALSE );
	return true;
}

void CleanUpDXLib()
{
	DxLib_End();
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow )
{ 
	if (!InitDXLib()) {
		return -1;
	}	

	MouseCursor *mouseCursor = new MouseCursor();//クラスのインスタンス化
	titleScene = new TitleScene();
	playScene = new PlayScene();
	gameoverScene = new GameOverScene();
	currentScene = titleScene;//現在の画面遷移状態

	st1 = new Stage1();
	st2 = new Stage2();
	st3 = new Stage3();
	currentStage = st1;
	
	SetDrawScreen( DX_SCREEN_BACK );

	while (true) {
		ClearDrawScreen();

		mouseCursor->updateCursorInfo();
		currentScene->draw();//現在のシーンのdraw関数を呼び出す
		currentStage->draw();//現在のステージのdraw関数を呼び出す
		currentScene->update(mouseCursor);//現在のcurrentSceneの中のdraw関数を呼び出す
		currentStage->next_stage(const Player& Pl);//現在のnext_stage関数を呼び出す

		if( CheckHitKey( KEY_INPUT_BACK ) ){
			break;
		}
		if( ProcessMessage() == -1 ){
			break;
		}

		ScreenFlip();
	}

	//ゲーム終了際、クラスのデリート
	delete titleScene;
	delete playScene;
	delete gameoverScene;
	delete mouseCursor;
	delete st1;
	delete st2;
	delete st3;

	CleanUpDXLib();

	return 0;
}

-stageManeger.h-

コード:


#pragma once

#include "DxLib.h"

struct Player;

class StageManeger
{
public:
	virtual void draw() = 0;
	virtual bool next_stage(const Player& Pl) = 0;
};


-stage1.h-

コード:


#pragma once

#include "StageManeger.h"

class Stage1 : public StageManeger
{
	int s1_graph;

public:
	Stage1();

	virtual void draw();
	virtual bool next_stage(const Player& Pl);
};


-stage1.cpp-

コード:


#include "DxLib.h"
#include "Stage1.h"
#include "Globals.h"

Stage1::Stage1()
{
	s1_graph = LoadGraph("passer画像/stage1.floor.png");
}

void Stage1::draw()
{
	DrawGraph(0, 0, s1_graph, FALSE);
}

bool Stage1::next_stage(const Player& Pl)
{
	if(Pl.pos_x() <= 640){
		currentStage = st2;
	}

	return TRUE;
}


アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: エラーの原因

#5

投稿記事 by h2so5 » 9年前

main.cppの52行目をよく見ましょう。

らいが

Re: エラーの原因

#6

投稿記事 by らいが » 9年前

指摘されたプログラムの箇所の場合、stageManagerで引数を渡しているので、main分でも同じ用に引数を渡さないといけない
んじゃないですか?

閉鎖

“C言語何でも質問掲示板” へ戻る