我正在制作面向对象的蛇和梯子版本。因此,我有一个名为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 ...
也许您应该使用虚函数。将Tiles的showTile()(或您要使用的其他函数)声明为纯虚函数并将子类(普通,蛇形,梯形)的showTile()作为虚拟函数。我不知道Tiles * board[tiles];
的目的,但是板数组将是Tiles obj指针的数组。所以