头文件C ++中的类型引发错误

时间:2019-12-15 19:32:42

标签: c++ visual-c++ syntax compiler-errors

我正在使用与内置矢量类型一起创建的对象。当我将变量设置为成员函数中的参数时,编译器将抛出错误,抱怨变量的类型。我不确定为什么编译器通过突出显示它们将它们识别为对象,所以我不确定错误是什么。

发生错误的地方

#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);
    }
}

Error Report

1 个答案:

答案 0 :(得分:1)

您具有头文件的循环引用。 Game.h包括humanPlayer.h,其中Game.h。这是一个不。就您而言,您可以简单地从#include "Game.h"文件中删除humanPlayer.h

在头文件中,仅包括直接需要的头文件。除非打算明确使用这些类/函数,否则不要包括头文件。

在不相关的音符上,please read this about namespace std