c++ - c++ 基类欠精细
问题描述
你好我有未定义基类的问题
这是我的基础和继承头文件
基类
#pragma once
#include "GameStateManager.h"
class GameEngine;
class GameStateManager;
struct tagMSG;
class GameState
{
public:
GameState() {}
virtual ~GameState() {}
virtual void Enter(GameEngine *) = 0;
virtual void Update(tagMSG& msg, GameStateManager* game) =0;
virtual void Exit() = 0;
};
派生类
#pragma once
#include "GameEngine.h"
#include "GameState.h"
#include "MainMenu.h"
class Logo :public GameState
{
public:
Logo();
~Logo();
void Enter(GameEngine * engine);
void Update(tagMSG& msg, GameStateManager* game);
void Exit();
private:
float timer;
GameEngine * m_GameEngine_Info;
SceneActor * blackscreen;
SceneActor * digipen_logo;
SceneActor * team_logo;
};
游戏状态管理器
#include "Logo.h"
#include "MainMenu.h"
#include "Level.h"
class GameState;
class GameStateManager
{
public:
GameStateManager(GameEngine* engine);
~GameStateManager();
void Cleanup();
void ChangeState(std::string state);
void Update(tagMSG & msg);
bool Running() { return m_running; }
void Quit();
private:
std::unordered_map<std::string, GameState *> states;
GameState * current_state;
bool m_running;
GameEngine * m_engine;
};
我试图为我的游戏引擎做游戏状态,参考这个
和
http://gamedevgeek.com/tutorials/managing-game-states-in-c/
更新
"game->ChangeState("mainmenu")" 中的错误 1
void Logo::Update(tagMSG& msg, GameStateManager* game)
{
m_GameEngine_Info->Update(msg);
if (m_GameEngine_Info->InputCheckTriggered(CVK_ESC))
{
timer = 0.0f;
}
while (timer >= 0.0f)
{
if (timer <= 0.1f)
{
game->ChangeState("mainmenu");
}
else if (timer <= 5.0f)
{
if (team_logo != nullptr)
team_logo->SetOnlyActive(true);
if (digipen_logo != nullptr)
digipen_logo->SetOnlyActive(false);
}
--timer;
}
}
改变状态函数, states 是一个 unordermap current_state 是 GameState *
void GameStateManager::ChangeState(std::string state)
{
current_state->Exit();
current_state = states.find(state)->second;
current_state->Enter(m_engine);
}
解决方案
在基类中包含 GameEngine.h 在 Logo.h 中包含 GameStateManager.h
看起来头文件没有正确包含。
推荐阅读
- java - 在firebase数据获取方法中创建无限循环
- python - 在直方图上准确绘制密度曲线,无需归一化
- android - 使用 IP 网络摄像头拍摄图像并将 URL 传递给 API
- scala - 当我将 scala 应用程序作为 docker 容器运行时,kamon statsd 不发送指标
- wordpress - Swiper 滑块在循环中未按预期工作:在 Wordpress 主题中为 true
- vba - MS ACCESS 中的 VBA 调度算法
- c# - SendGrid C#, 是否建议创建一次 SendGridClient 对象或为每个操作创建
- css - 如何使用媒体查询使网站适合移动视图
- python - 使用涉及列表中某些文件的过程进行循环?
- c++ - OpenCv 在 C++ 中从一维数组制作 Mat 图像的最快方法