我只是尝试将玩家数据存储在自己的类中,并使用函数在类中显示数据。
我将所有播放器数据存储在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();
}
答案 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);