Я начинаю кодировать настольную игру Djambi на C ++. Я создал класс для квадратов доски и создал вектор c указателей на квадратные объекты, чтобы получить реальную доску в моей игре. Каждый квадрат характеризуется своей строкой и столбцом, так что определение моей доски означает ассоциирование с каждым компонентом вектора квадрата с правильными координатами. Дело в том, что как только я определил свой вектор, я бы хотел, чтобы он был постоянным, потому что я хочу, чтобы каждый элемент вектора указывал на один и тот же квадрат, но как я могу сделать его постоянным, а затем определить его с помощью a для l oop? Поскольку это член c, я даже не могу определить его в области видимости класса. Некоторая помощь будет очень признательна.
//square.h
#include<vector>
class square
{
protected:
size_t row{ 0 };
size_t column{ 0 };
bool occupancy{ false };
public:
square() { };
square(size_t r, size_t c): row{r}, column{c} { }
square(size_t r, size_t c, bool occ) : row{ r }, column{ c }, occupancy{ occ } { }
~square() { };
bool & get_status() { return occupancy; };
size_t& get_row() { return row; };
size_t& get_column() { return column; };
static const size_t rank{ 9 };
static std::vector<square*> board;
static size_t indice(size_t r, size_t c);
static void define_board();
};
//square.cpp
#include"square.h"
#include<string>
size_t square::indice(size_t r, size_t c) {
size_t indice = rank * (r - 1) + c;
return indice;
};
std::vector<square*> square::board = std::vector<square*>(81);
void square::define_board() {
for (size_t r = 1; r <= square::rank; r++) {
for (size_t c = 1; c < 9; c++) {
*(board[indice(r, c)]) = square(r, c);
}
}
}