我正在使用与内置矢量类型一起创建的对象。当我将变量设置为成员函数中的参数时,编译器将抛出错误,抱怨变量的类型。我不确定为什么编译器通过突出显示它们将它们识别为对象,所以我不确定错误是什么。
发生错误的地方
#pragma once
#include "board.h"
#include "player.h"
#include "humanPlayer.h"
#include <vector>
class Game {
private:
int winner;
int X;
int Y;
bool** playerShip;
bool** computerShip;
public:
Game(int x, int y);
void startGame();
void WinScreen();
void LossScreen();
void ByeScreen();
void gameSetUpE(Board& B, humanPlayer User);
void gameSetUpS(Board& B, humanPlayer User);
void gameSetUpH(Board& B, humanPlayer User);
int playGame(Board& B, humanPlayer P1, Player P2);
char anotherGame();
void endGame(int num, Board& B);
void setWinner(int play) { winner = play; };
void setRecords(Board& B);
int getWinner() { return winner; };
bool getUserRecordVal(int row, int col);
bool getCompRecordVal(int row, int col);
int getRecordX() { }
void endGame(vector<Game> &list);
};
humanPlayer.h
#pragma once
#include "board.h"
#include "game.h"
#include <iostream>
using namespace std;
class humanPlayer : public Player{
private:
int hitsGotten;
int winHits;
int score;
public:
humanPlayer(int hits);
void makePlayerShip(Board& B, int length);
};
humanPlayer.cpp
#include "humanPlayer.h"
humanPlayer::humanPlayer(int hits){
winHits = hits;
hitsGotten = 0;
score = 0;
}
void humanPlayer::makePlayerShip(Board& B, int length) {
int startRow;
int startCol;
char Direction;
int Dint{};
int rowNum = B.getDimY();
int colNum = B.getDimX();
cout << " Ship Length " << length << endl;
cout << "Choose a row number between 1 and " << rowNum << endl;
cin >> startRow;
cout << "Choose a column number between 1 and " << colNum << endl;
cin >> startCol;
cout << "Choose a Direction (Horizontal(H) or Vertical(V))" << endl;
cin >> Direction;
if (toupper(Direction) == 'H') {
Dint = 0;
}
else if (toupper(Direction) == 'V') {
Dint = 1;
}
if ((startRow < 1) || (startCol > B.getDimY())) {
cout << "Starting row is out of range" << endl;
cout << "Choose a row number between 1 and " << rowNum << endl;
cin >> startRow;
}
if ((startCol < 1) || (startCol > B.getDimX())) {
cout << "Starting columns is out of range" << endl;
cout << "Choose a column number between 1 and " << colNum << endl;
cin >> startCol;
}
startCol = startCol - 1;
startRow = startRow - 1;
if (Dint == 0) {
int res0 = B.makeShipH(length, startRow, startCol);
if (res0 == 0) {
makePlayerShip(B, length);
}
}
else if (Dint == 1) {
int res1 = B.makeShipV(length, startRow, startCol);
if (res1 == 0) {
makePlayerShip(B, length);
}
}
else {
cout << "Please Try again" << endl;
makePlayerShip(B, length);
}
}
答案 0 :(得分:1)
您具有头文件的循环引用。 Game.h
包括humanPlayer.h
,其中Game.h
。这是一个不。就您而言,您可以简单地从#include "Game.h"
文件中删除humanPlayer.h
。
在头文件中,仅包括直接需要的头文件。除非打算明确使用这些类/函数,否则不要包括头文件。
在不相关的音符上,please read this about namespace std。