可从多个文件和函数c++访问的类值

Class value accessible from multiple files and functions c++

本文关键字:访问 c++ 函数 文件      更新时间:2023-10-16

如果以前有人问过这个问题,我深表歉意。

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

不管怎样,有了这些,我的问题是我有一节课"Player.hpp";以及相应的";Player.cpp";其中我已经定义了";玩家";我可以初始化值fine(这是类的函数之一),但当玩家转到"fine"时;播放()"函数(它保存游戏的骨骼,位于另一个.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风格的游戏)

假设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;
};

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

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

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

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

使得不需要初始化功能。