【发布时间】:2019-12-15 19:32:42
【问题描述】:
我使用的是与内置矢量类型一起创建的对象。当我将它们设置为成员函数中的参数时,编译器会抛出一个抱怨变量类型的错误。我不确定为什么编译器会通过突出显示它们将它们识别为对象,所以我不确定错误是什么。
发生错误的地方
#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);
}
}
【问题讨论】:
-
1) 请在您的问题代码中发布错误,而不是它们的图像。 2)请正确格式化您的代码。 3)您的代码没有包含足够的信息。错误基本上是说
humanPlayer不存在,我认为这是真的,因为我在任何地方都看不到它。 4) 使用vector时,指定其全名std::vector -
请提供minimal reproducible example,估计您有错字或循环包含
-
避免发布错误信息的图片。太多用户无法看到图像。在错误列表选项卡附近,您应该找到输出选项卡。输出选项卡将以文本形式显示完整的构建输出,使粘贴到 Stack Overflow 问题中变得非常容易。作为额外的好处,构建输出通常会提供更多信息和上下文,从而使错误更容易解决。
-
如果您向我们显示“humanPlayer.h”,也许我们可以追踪错误。错误可能来自那里。
-
我找不到错误报告的输出选项卡。我用更多可能包含错误的代码更新了问题
标签: c++ visual-c++ syntax compiler-errors