gpt4 book ai didi

c++ - 是什么导致了我的错误?我正在尝试创建一个玩家类并将玩家名称存储为变量

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:02 25 4
gpt4 key购买 nike

又是一个菜鸟,希望有心人帮帮我!正如我的问题所述,我只是想创建一个玩家类(它用于 RPG 游戏)。但是,我尝试了多种方法来执行此操作,显示的代码是最新的,但是我不断遇到不同的错误。我正在使用 Microsoft visual c++ 2010 express,我目前面临的错误是:

1>player.obj : error LNK2001: unresolved external symbol "private: static class std::basic_string,class std::allocator > Player::m_playerName" (?m_playerName@Player@@0V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A)

我希望这是足够的细节!我创建的其余代码/文件如下:

游戏.cpp

#include <iostream>
#include "player.h"

using namespace std;



int main()
{

Player main;


main.setStats();
main.showStats();


int stopper;
cin >> stopper;

return 0;



}

播放器.h

#include <string>

class Player
{
public:

Player();
void showStats();
void setStats();


private:

int m_playerLVL;
static std::string m_playerName;
};

播放器.cpp

#include "player.h"
#include <iostream>
#include <string>

using namespace std;

Player::Player()
{
cout << "Please enter your name: ";
string playerName;
getline (cin, playerName);
m_playerName = playerName;
}

void Player::showStats()
{
cout << "Hello, i am " << m_playerName << "and i am lvl " << m_playerLVL;
}

void Player::setStats()
{
m_playerLVL = 1;
}

最佳答案

您正在声明播放器的名称是static:

static std::string m_playerName; // DON'T MAKE IT STATIC!

这在语义上是不正确的,删除​​ static 恰好可以解决您的问题。 Player 的每个实例都应该将不同的值关联到 m_playerName(因为每个玩家都有自己的名字)。声明一个数据成员 static 使其对于整个 Player 类都是全局的(即它没有被赋予每个实例值,而是一个全局值,它对所有 Player 都是相同的code>Player 对象)。这听起来不像是您想要的。


现在,如果出于任何原因您真的打算将其声明为static 数据成员,那么您应该为它提供一个定义全局命名空间范围:

std::string Player::m_playerName;

链接器提示缺少这样的定义。

关于c++ - 是什么导致了我的错误?我正在尝试创建一个玩家类并将玩家名称存储为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15808632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com