Как использовать уже заполненный массив указателей в качестве параметра функции / метода - PullRequest
0 голосов
/ 30 мая 2020

Я делаю версию «Ориентированные змейки и лестницы». Итак, у меня есть класс Game, в котором есть метод startGame () и метод play (). Вот заголовок класса.

#ifndef GAME_H_INCLUDED
#define GAME_H_INCLUDED
#include <iostream>
#include "Tiles.cpp"
class Game{
 private:
    int tiles, snakes, ladders, penalty, reward, players, turns, currentTurn;
    char mode;
 public:
    Game();
    Game(int, int, int, int, int, int, int, char);
    void play(Tiles*, unsigned int);
    void startGame();
};
#endif

Итак, сначала я создаю массив указателей и добавляю класс с именем Tiles (у которого есть 2 унаследованных класса: Snakes и Ladders) и заполняю его объектами унаследованных классы.

void Game::startGame(){
 int tiles, n1, n2, n3;
 Tiles * board[tiles];

 for (int i=0;i<n;i++){
    board[i] = new Normal(i+1);
 }

 for (int i2=0;i2<n2;i2++){

    do {
    nTileS = rand() % tiles;
    }while (board [nTileS] -> getType() != 'N');
    board[nTileS] = new Snake(nTileS+1);
 }

 for (int i3=0;i3<n3;i3++){
    do {
        nTileL = rand() % tiles;
    }while (board [nTileL] -> getType() != 'N');
        board[nTileL] = new Ladder(nTileL+1);
 }

Создав массив, я вызываю функцию play (), которая содержит все c логики игры, но мне нужен созданный мной массив в качестве параметра. play(board[tiles], tiles);

void Game::play(Tiles* board, unsigned int nBoard){
 cout<< "test" << endl;
 for (int i=0; i<nBoard; i++){
    board[i].showTile();//method that prints the info of the object, just for testing
 }

Но в результате код дает мне только test, так что на самом деле метод работает, но, видимо, он не распознает объекты моего массива указателей. Я просто хочу знать, как использовать этот массив указателей в этом случае. Кстати спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...