Предоставление немодифицируемой версии вложенных переменных-членов
У меня есть класс для небольшой карточной игры со структурой вложенных указателей. Есть несколько игровых объектов, которые нужно рендерить на дисплее. Тем не менее, класс, который будет визуализировать эти объекты, не должен иметь возможности изменять любой из них. Я не хочу превращать класс рендерера в класс друзей. Вместо этого я хочу вернуть неизменяемую версию игровых объектов из функции.
Как я могу представить немодифицируемую версию массива "columns" с этой данной структурой вложенного указателя?
Вот заголовок для класса:
class Card;
// Game objects
using Deck = std::array<Card*, 52>;
using Column = std::vector<Card*>;
class Game {
// Deck
Deck deck;
// Columns
Column* columns[7];
Column* collectorColumns[4];
Column* availableCardsColumn;
// Current state of the game
bool playing = false;
// Creates a new deck
void createDeck();
// Creates columns
void createColumns();
// Deals the cards for the initial state of the game
void dealCards();
// Clears all objects
void clear();
public:
// Starts a new game
void start();
// True if the game is finished, false otherwise
bool isFinished();
// Move card from one column to another
void moveCard(int from, int to);
// Game renderer is a friend
friend void GameRenderer::renderGame(const Game& game) const;
};