Я делаю головоломку Word Search Puzzle для школы, и проблема, с которой я столкнулся, заключается в следующем.
Я пытаюсь заполнить двумерный массив случайными символами, что не сложно, но когда вы вводите классы и указатели .. Это сбивает с толку. Итак, у меня есть класс с именем Char, и его функция - генерировать случайный символ для хранения внутри 2d-массива, присутствующего в классе Board.
class Char
{
private:
char Letters;
public:
Char();
Char(char let);
~Char();
void Set_Letters(char let) { Letters = let; }
char Get_Letters(void) { return Letters; }
void Random(void);
void View(void);
};
class Board
{
private:
int BoardWidth;
int BoardHeight;
int numWords;
Char** Caracters;
Point P; //This is ponting to an other class called Point, it keeps track of the location of the Words that were read from the txt file
public:
Board(void);
~Board();
void Init(int Dx, int Dy);
inline void Set_BoardWidth(int bW) { BoardWidth = bW; }
inline void Set_Boardheight(int bH) { BoardHeight = bH; }
};
Так что это важные классы. В классе Board переменная, которую я использую для хранения 2d-массива, - это Char **, который я даже не знаю, является ли это правильным способом сделать это. Вот соответствующий код функций в классе Char:
void Char::Random()
{
//The unsigned int is used to silence the error : "Possible loss of data"
srand((unsigned int)time(NULL));
Set_Letters('A' + (rand() % 26));
}
Это создает случайные символы, и это та часть, которая должна сохранять символы в 2d массиве.
void Board::Init(int Dx, int Dy)
{
Set_BoardWidth(Dx);
Set_Boardheight(Dy);
Char Letter;
int n = 0, m = 0;
for (int j = 0; j < Dy; j++)
{
for (int i = 0; i < Dx; i++)
{
//Fill the array with random char´s
Letter.Random();
**Caracters = Letter.Get_Letters();
//In this part im attributing a x and y value to the char
P.Set_x(n); P.Set_y(m);
n++; m++;
}
}
}
Ошибка, которую он мне выдает:
«Возникло исключение: нарушение прав чтения. this->Caracters was nullptr
».
Я пытался создайте строку в классе Board для хранения всего этого, но, похоже, она не работает, по какой-то причине класс даже не распознает переменную, когда я ее использовал. Также пытался использовать char**
, выдал мне ту же ошибку.
И это все, больше ничего не пробовал. После просмотра видео у меня появилась идея использовать вектор, но я еще не пробовал.
Я только что закончил изучать C в прошлом семестре, и я чувствую, что все еще слишком много схватился за это. И мне трудно разлучить их обоих. Поэтому, если у вас есть какие-либо советы о том, как я могу стать лучше и что я могу улучшить, я также пишу код, пожалуйста, дайте мне знать.