C ++类对象作为其他类函数中的参数

时间:2015-10-28 14:41:56

标签: c++ function class object parameter-passing

我在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}}

如果你能帮助我,我很高兴看到你的回应。

0 个答案:

没有答案