如何使用已经作为函数/方法的参数填充的指针数组

问题描述 投票:0回答:1

我正在制作面向对象的蛇和梯子版本。因此,我有一个名为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()的函数,该函数具有有关游戏的所有逻辑,但我希望将创建的数组作为参数。 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,因此该方法确实有效,但显然它无法识别我的指针数组的对象。我只想知道在这种情况下如何使用该指针数组。谢谢你]]

我正在制作面向对象的蛇和梯子版本。因此,我有一个名为Game的类,该类具有一个名为startGame()的方法和一个名为play()的方法。这是该类的标题。 #ifndef ...

c++ arrays oop pointers
1个回答
0
投票

也许您应该使用虚函数。将Tiles的showTile()(或您要使用的其他函数)声明为纯虚函数并将子类(普通,蛇形,梯形)的showTile()作为虚拟函数。我不知道Tiles * board[tiles];的目的,但是板数组将是Tiles obj指针的数组。所以

© www.soinside.com 2019 - 2024. All rights reserved.