У меня есть класс с именем MapGraph
и другой класс с именем GameState
. Я вызываю две функции с именами GoToLocation(NextLocation);
и Game->SidePanel();
из main
. Объявление и определение GoToLocation () существуют в MapGraph.h
и MapGraph.cpp
соответственно, а объявление и определение SidePanel () существуют в GameState.h
и GameState.cpp
соответственно. В SidePanel () я пытаюсь получить значение переменной с именем CurrentLocation, которая существует в MapGraph
и является публичной. Я включил MapGraph.h
в GameState.cpp
и объявил класс как class MapGraph;
, но я не знаю, как получить значение переменной. Если я сделаю MapGraph* Map = new MapGraph;
, это всегда даст мне начальное значение переменной, а не обновленное. Любая помощь будет оценена. Спасибо.
Код в main.cpp :
int main()
{
MapGraph* Map = new MapGraph;
GameState* Game = new GameState;
//Game->MainMenu();
Map->GoToLocation(MapGraph::LocationNames::CastleSquare);
Game->SidePanel();
//system("CLS");
return 0;
}
MapGraph.h :
#pragma once
#include <iostream>
#include <list>
#include <string.h>
class MapGraph
{
public:
MapGraph();
enum class LocationNames
{
GraveYard = 0,
Sewers = 1,
Outskirts = 2,
Barracks = 3,
Town = 4,
CastleSquare = 5,
ThroneRoom = 6,
Forest = 7,
Gutter = 8,
HunterShack = 9
};
std::string LocNamesString[10] =
{
"Grave Yard",
"Sewers",
"Outskirts",
"Barracks",
"Town",
"Castle Square",
"Throne Room",
"Forest",
"Gutter",
"Hunter Shack"
};
LocationNames CurrentLocation;
void GoToLocation(LocationNames NextLocation);
};
и GameState.cpp :
#include <iostream>
#include <stdlib.h>
#include "GameState.h"
#include "MapGraph.h"
class MapGraph;
void GameState::SidePanel()
{
MapGraph* Map = new MapGraph;
std::cout << Map->LocNamesString[(int)Map->CurrentLocation];
}
PS: Я пытался изменить CurrentLocation в MapGraph.h на static
, но это всегда вызывает ошибку компоновщика 2001. ошибка исчезнет, как только я уберу слово static
.
Спасибо.