Dungeon クラスのインスタンスを作成すると、スタック オーバーフロー エラーが発生します。私のダンジョンクラスが部屋の配列を作成し、私の部屋がセルの配列を作成するためだと思います。私の唯一の質問は、以前にこれを行ったことがあり、この問題が発生したことがないことです。では、今回は何が間違っているのでしょうか。配列が大きすぎますか? 部屋の配列を最大 [5][3] まで作成できますが、[5][5] サイズの部屋にしたいと考えています。これだけでは無理ですか?
スタック オーバーフロー エラーは、スタックのメモリが不足したときに発生することは理解していますが、そのスタックを終了して、最初からやり直すことができるようになったことをどのように知ることができますか? それとも、そのスタックから何かが取り除かれたときですか?
これらの 3 つのクラスがどのようにセットアップされるかについての私のコード (Dungeon.h) は次のとおりです。
#ifndef DUNGEON_H
#define DUNGEON_H
#include <stdlib.h>
#include <string>
#include "TextureHandler.h"
#include "Room.h"
using namespace std;
class Dungeon
{
public:
Dungeon();
~Dungeon();
private:
static const int MAX_RM_ROWS = 5; //Maximum amount of rows of rooms we can have
static const int MAX_RM_COLS = 5; //Maximum amount of columns of rooms we can have
Room rooms[5][5];
int currentDungeon; //Stores the ID of the current dungeon we are in.
int currentRoomRow; //Stores the row position in the room array for what room the player is in
int currentRoomCol; //Stores the column position in the room array for what room the player is in
protected:
};
#endif
ルーム.h
#ifndef ROOM_H
#define ROOM_H
#include <stdlib.h>
#include "Cell.h"
using namespace std;
class Room
{
public:
Room();
~Room();
void draw();
void setupCell(int row, int col, float x, float y, float width, float height, bool solid, vector<float> texCoords);
int getMaxRows();
int getMaxCols();
private:
static const int MAX_ROWS = 30;
static const int MAX_COLS = 50;
Cell cells[MAX_ROWS][MAX_COLS];
protected:
};
#endif
Cell.h
#ifndef CELL_H
#define CELL_H
#include <stdlib.h>
#include <vector>
#include "GL\freeglut.h"
using namespace std;
class Cell
{
public:
Cell();
~Cell();
void setup(float x, float y, float width, float height, bool solid, vector<float> texCoords);
void draw();
float getX();
float getY();
float getWidth();
float getHeight();
bool isSolid();
private:
float x;
float y;
float height;
float width;
bool solid;
vector<float> texCoords;
protected:
};
#endif