1

如果之前有人问过这个问题,我事先道歉。

我把我所有的技能都用​​谷歌来使用,但仍然没有,所以如果这个问题之前已经得到回答,请链接答案,我基本上会结束这个问题。

无论如何,除了所有这些,我的问题是我有一个类“Player.hpp”和一个相应的“Player.cpp”,我在其中定义了“播放器”的位置系统,我可以很好地初始化值(这是该类的功能之一),但是当我使用该函数获取我存储的位置没有存储任何东西......任何帮助将不胜感激。

如果您不明白我在问什么,请发表评论,我会详细说明。

下面的代码:

//Player.hpp
class player
{
public:
    std::string getLocation();
    void setLocation(std::string local);
    void initLocation();

private:
    std::string location;
};

//Player.cpp
void player::initLocation()
{
    player::location = "B0";
    return;
}
std::string player::getLocation()
{
    return player::location;
}
void player::setLocation(std::string local)
{
    player::location = local;
    return;
}

//Main.cpp
//....
player plays;
plays.initLocation();
//....

//Game.cpp
//...
player plays;
std::string local = plays.getLocation(); //When I check there isn't a value that gets stored...
if(local.find(...)...)

再次感谢任何帮助,如果已经提出这样的问题,我深表歉意。

编辑:

我想我应该澄清一下,我还想随着player从一个房间到另一个房间的进展而更改存储的值(因为这是我正在制作的一个 zork 风格的游戏)

4

2 回答 2

1

假设 的每个实例player可能位于单独的位置,您可以通过player在其构造函数中使用默认位置初始化 ' 位置来解决此问题。这消除了对 的需求initLocation(),因此无需从 调用它Main.cpp

//Player.hpp
class player
{
public:
    std::string getLocation();
    void setLocation(std::string local);

    player () : location("B0") {}

private:
    std::string location;
};
于 2013-08-22T23:40:45.273 回答
0

看起来好像您static在类变量声明前面省略了:

class player
{
    // ...
    static std::string location;
};

...这也需要一个定义。当然,定义也成为初始化值的主要位置:

// Player.cpp
std:string player::location("B0");

使初始化函数变得不必要。

于 2013-08-22T23:34:42.367 回答