C++ 可从多个文件和函数c++;
如果以前有人问过这个问题,我表示歉意 我把我在谷歌的所有技能都用上了,但仍然一无所获,所以如果这个问题之前已经得到了回答,请将答案链接起来,我将基本上结束这个问题 不管怎样,所有这些都解决了,我的问题是我有一个类“Player.hpp”和一个相应的“Player.cpp”,在其中我为“Player”定义了位置系统,我可以很好地初始化值(这是类的函数之一),但当Player转到“play()”函数时(它保存游戏的骨骼并位于另一个.cpp文件中)当我使用该函数获取我存储的位置时,没有存储任何内容…任何帮助都将不胜感激 如果你不明白我的要求,请评论,我会详细说明 代码如下:C++ 可从多个文件和函数c++;,c++,class,C++,Class,如果以前有人问过这个问题,我表示歉意 我把我在谷歌的所有技能都用上了,但仍然一无所获,所以如果这个问题之前已经得到了回答,请将答案链接起来,我将基本上结束这个问题 不管怎样,所有这些都解决了,我的问题是我有一个类“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…它只是让我发现我有一个非常不同的问题,我可以解决…好吧,它成功了…它只是让我发现我有一个非常不同的问题,我可以解决。。。