我的播放器类中的getter和setter问题

时间:2018-01-13 23:29:28

标签: c++

我是C ++的新手,对于一般的编码很新,我正在尝试制作一个简单的基于文本的RPG,以获得一些乐趣。我已经制作了一个类播放器,我正在尝试编辑它,以便用户编辑playerName的名称,但我收到错误,我真的不知道为什么。

我的主要方法:

// Thomas' Game.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include "Player.h"
#include <fstream>
#include <istream>


using namespace std;

int main()
{
    Player player;

    cout << "Hello traveller, could I ask you your name?";
    cin >> player.setName;
    cout << "Hello " << player.getName << endl;


return 0;
}

我的播放器课程: .H

#pragma once
#include <iostream>
#include <string>

using namespace std;

class Player
{
private:
    string playerName = "";
    string playerRace = "";
    int playerAge = 0;


public:
    void setName(std::string);
    string getName();
    void setRace(std::string);
    string getRace();
    void setAge(int);
    int getAge();
};

.ccp

#include "stdafx.h"
#include "Player.h"

void Player::setName(std::string name)
{
     playerName = name;
}
std::string Player::getName() {
     return playerName;
}
void Player::setAge(int age) 
{
    playerAge = age;
}
int Player::getAge() {
    return playerAge;
}
void Player::setRace(std::string race)
{
    playerRace = race;
}
std::string Player::getRace() {
    return playerRace;
}
  

严重级代码说明项目文件行抑制状态
  错误C2679二进制'&gt;&gt;':没有找到哪个运算符采用'overloaded-function'类型的右手操作数(或者没有可接受的转换)Thomas'Game.cpp 18

     

严重级代码说明项目文件行抑制状态
  错误C3867'Player :: getName':非标准语法;使用'&amp;'创建一个指向成员的指针Thomas'Game c:\ users \ thomas \ source \ repos \ thomas'game \ thomas'game \ thomas'game.c.c 19

是我目前正在犯的错误

2 个答案:

答案 0 :(得分:2)

第一个错误意味着您无法直接将输入从cin传递到setName函数,您应该首先将其存储在如下变量中:

cout << "Hello " << player.getName() << endl;

第二个错误只是因为你在getName上缺少括号:

/usr/local/sbin

答案 1 :(得分:0)

string name; cin >> name; player.setName(name); 是一个功能。你可能想要这样的东西。

{{1}}

这将从标准输入中读取下一个字符串(空格分隔)为字符串,然后使用该字符串调用您的setter。

以下是std::istream::operator>>

的参考资料