将类中私有变量的值传递给函数

时间:2017-09-20 07:25:22

标签: c++ console

我只是尝试将玩家数据存储在自己的类中,并使用函数在类中显示数据。

我将所有播放器数据存储在Player类中,我可以将私有变量输出到main中,但是我创建了一个能够获取所有播放器数据并显示它的函数。

getPInfo类中的Player函数应该从类中获取名称并将其放入pName函数内的getPlayer字符串中并显示它。但是你可以想象,它并没有。 getPInfo函数没有成功将名称值传递给getPlayer函数。

请记住,我没有C ++专家,所以请让你的答案平易近人。

#include "stdafx.h"
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;

class Player {
public:
    Player() {
        name = "?";
    }
    void getPInfo(string x) {
        x = name;
    }
    void setName(string x) {
        name = x;
    }

private:
    string name;
};

void getPlayer() {
    string pName;

    Player player;
    player.getPInfo(pName);

    cout << "Name = " << pName << endl;
}

int main()
{
    string str;

    cout << "What is your name?\n" << endl;
    cin >> str;
    Player pObj;
    pObj.setName(str);
    getPlayer();
}

3 个答案:

答案 0 :(得分:1)

修复它并使其更多c ++ ish:

    #include <iostream>
    #include <string>
    using std::cout;
    using std::cin;
    using std::endl;
    using std::string;


    class Player {
    public:
        Player()
            : name("?")
        {}

        const string& getPInfo() const{
            return name;
        }
        void setName(const string& x) {
            name = x;
        }

    private:
        string name;
    };


    void getPlayer(const Player& player) {
        string pName;
        pName = player.getPInfo();

        cout << "Name = " << pName << endl;
    }

    int main()
    {
        string str;

        cout << "What is your name?\n" << endl;
        cin >> str;
        Player pObj;
        pObj.setName(str);
        getPlayer(pObj);
    }

答案 1 :(得分:0)

问题可能是getPIinfo()

您想查看自己的图书return的工作原理。

答案 2 :(得分:0)

嗯,第一个问题是Player :: getPInfo(std :: string)中的参数x未被使用。如建议的那样,你应该只使用返回值并去除参数。

std::string getPInfo() const { return this->name; }

这意味着你的getPlayer()函数需要更改一些。由于您实际上并没有使用此功能的玩家,我们可能会将其重命名为displayPlayer并将玩家作为参数。

void displayPlayer(Player const& player) { 
    std::cout << "Name = " << player.getPInfo() << std::endl;
}

完成此操作后,您可以更新主页的最后一行以显示其创建的播放器。

displayPlayer(pObj);