Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 可从多个文件和函数c++;_C++_Class - Fatal编程技术网

C++ 可从多个文件和函数c++;

C++ 可从多个文件和函数c++;,c++,class,C++,Class,如果以前有人问过这个问题,我表示歉意 我把我在谷歌的所有技能都用上了,但仍然一无所获,所以如果这个问题之前已经得到了回答,请将答案链接起来,我将基本上结束这个问题 不管怎样,所有这些都解决了,我的问题是我有一个类“Player.hpp”和一个相应的“Player.cpp”,在其中我为“Player”定义了位置系统,我可以很好地初始化值(这是类的函数之一),但当Player转到“play()”函数时(它保存游戏的骨骼并位于另一个.cpp文件中)当我使用该函数获取我存储的位置时,没有存储任何内容…任

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

我把我在谷歌的所有技能都用上了,但仍然一无所获,所以如果这个问题之前已经得到了回答,请将答案链接起来,我将基本上结束这个问题

不管怎样,所有这些都解决了,我的问题是我有一个类“Player.hpp”和一个相应的“Player.cpp”,在其中我为“Player”定义了位置系统,我可以很好地初始化值(这是类的函数之一),但当Player转到“play()”函数时(它保存游戏的骨骼并位于另一个.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(...)...)
再次感谢您的帮助,如果已经有人问过这样的问题,我深表歉意

编辑:
我想我应该澄清一下,我还想在
玩家
从一个房间移动到另一个房间时更改存储的值(因为这是我正在制作的zork风格的游戏)

看起来好像在类变量声明之前忽略了
静态

class player
{
    // ...
    static std::string location;
};
…这也需要一个定义。当然,该定义也成为初始化值的主要位置:

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

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

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

class player
{
    // ...
    static std::string location;
};
…这也需要一个定义。当然,该定义也成为初始化值的主要位置:

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

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

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

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

你真的在
Game.cpp
中创建了一个不同于你在
Main.cpp
中初始化的
player
的实例吗?如果是,那就是你的问题。你如何“检查”是否“没有存储的值”@jxh我不太确定该怎么做(因为我对编程还是非常陌生)但是我会看看如何查找信息。@Kerrek SB我在“假定”从
getLocation()接收数据后,通过显示本地的值来检查它
你真的在
Game.cpp
中创建了一个与你在
Main.cpp
中初始化的不同的
player
实例吗?如果是这样,那就是你的问题。你如何“检查”是否“没有存储的值”?@jxh我不太确定该怎么做(因为我对编程还是非常陌生)但是我会看看如何查找信息。@Kerrek SB我在“假定”从
getLocation()接收数据后,通过显示本地的值来检查它
static
将不起作用,因为我需要能够更改位置的值,以便我可以从任何位置加载它,并且它仍然是正确的设置值。
static
将不起作用,因为我需要能够更改位置的值,以便我可以从任何位置加载它,并且它仍然是正确的设置值。好的,这样它就起作用了d…它只是让我发现我有一个非常不同的问题,我可以解决…好吧,它成功了…它只是让我发现我有一个非常不同的问题,我可以解决。。。