我在Visual Studio 2015中有一个C ++项目 GameManager.h和Input.h都给我一个 语法错误:identifier' Player' 。发生这种情况是因为我想提供类型'播放器'作为这两个Header文件及其相应C ++文件中的函数的参数 我该如何解决这个问题?有关详细信息,我提供了我的代码 main.cpp:
#include "Player.h"
class GameManager
{
public:
void Game(Player p1, Player p2, Player morePlayers[]);
};
它创建一个GameManager类型的对象和3个Player类型的对象 GameManager.h:
#include "GameManager.h"
void GameManager::Game(Player p1, Player p2, Player morePlayers[])
{
int playerCnt = 0;
Input input;
input.getPlayerDetails(playerCnt, p2);
input.getMorePlayerDetails(playerCnt, morePlayers);
}
GameManager.cpp:
#pragma once
#include "Player.h"
#include <iostream>
#include <string>
using namespace std;
class Input
{
public:
Input();
void getPlayerDetails(int &playerNum, Player p);
void getMorePlayerDetails(int &playerNum, Player p[]);
};
它创建了一个Input类型的对象以使用更多函数,并且一旦我解决了这个问题就会获得更多代码。然后使用从main.cpp获取的特定参数调用函数 Input.h:
#include "Input.h"
void Input::getPlayerDetails(int &playerNum, Player p)
{
playerNum++;
string currentName;
char currentSymbol;
cout << "Player " << playerNum << ", what is your name?\n";
cin >> currentName;
p.setName(currentName);
cout << currentName << " what is your symbol?\n";
cin >> currentSymbol;
p.setSymbol(currentSymbol);
}
void Input::getMorePlayerDetails(int &playerNum, Player p[])
{
int plNum = playerNum;
if (playerNum >= 12)
cout << "You can't get another player!\n";
else
{
//getPlayerDetails(p[playerNum - 2], (plNum - 2));
}
}
它包括Input.cpp所需的所有内容并初始化函数
Input.cpp:
#pragma once
#include <iostream>
#include <string>
using namespace std;
class Player
{
private:
string _name;
char _symbol;
public:
Player();
void getName();
void setName(string name);
void setSymbol(char symbol);
};
它现在具有所需的所有功能,并且都获得了Player类型的对象。而第二个功能现在还没有完成。但这并不重要。 Player.h:
#include "Player.h"
Player::Player()
{
}
void Player::getName()
{
cout << "I have no name!\n";
}
void Player::setName(string name)
{
_name = name;
}
void Player::setSymbol(char symbol)
{
_symbol = symbol;
}
Player.cpp:
{{1}}
如果你能帮助我,我很高兴看到你的回应。