Visual Studio 2015"非标准语法;使用'&'为成员创建指针"

时间:2015-11-17 01:58:06

标签: c++ pointers

我创建了一个快速游戏,并使用了不同的类文件来输入玩家名称。我一直收到指定的错误:

  

使用'&'为成员

创建指针

当我尝试从main调用该函数时。

函数getPlayerOnegetPlayerTwo是公共函数。我认为这是因为我改变了player1值所以我需要一个指针但是当我尝试添加一个指针时它会给我同样的错误。

如何使用指针编辑字符串的值?

主:

#include <iostream>
#include <string>

//Included Header Files
#include "Player.h"

using namespace std;

int main() {

    Player players;
    cout << players.getPlayerOne << endl;
    cout << players.getPlayerTwo << endl;

}

Player.h:

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

using namespace std;

class Player
{
public:

    //Initialize player1
    void getPlayerOne(string &playerOne);
    void getPlayerTwo(string &playerTwo);


    Player();
private:

    //Players
    string player1;
    string player2;
};

Player.cpp

#include "Player.h"

Player::Player()
{
}

void Player::getPlayerOne(string &playerOne) {
    cout << "Enter player 1 name: \n";
    cin >> playerOne;
    cout << playerOne << " is a great name!\n";
    player1 = playerOne;
}

void Player::getPlayerTwo(string &playerTwo) {
    cout << "Enter player 2 name: \n";
    cin >> playerTwo;
    cout << playerTwo << " is a great name!\n";

    player2 = playerTwo;
}

我可能只是把Player代码放在main中,因为它很小,但我认为最好有(我最终)我可以用更多字符编写文件的单独类。

2 个答案:

答案 0 :(得分:1)

你有两个名为getPlayerX(string & name)的函数没有返回: 我认为你在&#34; getters&#34;和#34; setters&#34;。

您希望std::cout GET 为字符串,然后将您的函数getPlayerX()设为 GETTER

std::string getPlayerX() const noexcept;

您希望设置您的数据,制作 SETTER

void setPlayerX(const std::string & name);

请记住,您使用的功能如下:

Type_you_want_to_get   Name_of_the_function ([const] type_of_argument [&] var_name)

无效&#34;表示&#34;没有回报。

答案 1 :(得分:0)

我不得不用函数调用函数,因为它们已经有cout和cin语句。愚蠢的错误。

string player1;
string player2;

int main() {

    Player players;
    players.getPlayerOne(player1);
    players.getPlayerTwo(player2);

}