I am getting a stack overflow error when I create an instance of my Dungeon class. I feel like it is because my dungeon class creates an array of rooms and my rooms create an array of cells. My only question is I have done this before and never had this issue. So what am I doing wrong this time? Are my arrays too big? I can make my rooms array to a maximum of [5][3] but I would like to have it a [5][5] size room. Is this just impossible to do?
I understand that a stack overflow error is when you run out of memory on the stack but how do I know when I exit that stack and can start fresh again? Or when something gets taken off that stack?
Here is my code on how these 3 classes are setup (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
Room.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