Предоставление немодифицируемой версии вложенных переменных-членов

У меня есть класс для небольшой карточной игры со структурой вложенных указателей. Есть несколько игровых объектов, которые нужно рендерить на дисплее. Тем не менее, класс, который будет визуализировать эти объекты, не должен иметь возможности изменять любой из них. Я не хочу превращать класс рендерера в класс друзей. Вместо этого я хочу вернуть неизменяемую версию игровых объектов из функции.

Как я могу представить немодифицируемую версию массива "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;

};

0 ответов

Другие вопросы по тегам