Я прошу прощения заранее, если этот вопрос был задан ранее.
Я применил все свои навыки в Google, и все еще ничего, поэтому, если на этот вопрос уже был дан ответ, просто свяжите ответ, и я по сути закончу этот вопрос.
В любом случае, несмотря на все это, моя проблема в том, что у меня есть класс «Player.hpp» и соответствующий «Player.cpp», в котором я определил систему локации для «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(...)...)
Опять же, любая помощь приветствуется, и я прошу прощения, если такой вопрос уже задавался.
Я думаю, мне следовало уточнить, что я также хочу изменить значение, хранящееся как 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");
делая ненужной функцию инициализации.