gpt4 book ai didi

c++ - 未知原因的编译器错误 (C++)

转载 作者:行者123 更新时间:2023-11-28 01:06:18 25 4
gpt4 key购买 nike

当我尝试编译时,我在 MSVS C++ 2010 IDE 中遇到编译器错误 (C2061)。我根本不知道它为什么会发生,因为我看不到明显的错误。

#pragma once
#ifndef _CCOMPONENT_H
#define _CCOMPONENT_H

#include "CGame.h"

class CComponent
{
public:
CComponent(CGame &game);
~CComponent();

protected:
virtual void Draw();
virtual void Update();
virtual void Init();
void Dispose();
};


#endif // _CCOMPONENT_H

编译器错误:

 ccomponent.h(10): error C2061: syntax error : identifier 'CGame'

CGame.h 的内容

/**************************************************
*
*
****************************************************/
#pragma once
#ifndef _CGAME_H
#define _CGAME_H

#include <cstdio>
#include <list>
//#include <Box2D/Box2D.h>
#include <allegro5\allegro5.h>
#include "SharedDef.h"

#include "CComponent.h"
#include "CTestPlayer.h"

using namespace std;

class CComponent;
class CTestPlayer;

const int MAX_COMPONENTS = 255;

class CGame
{
public:
// CONSTRUCTORS
CGame();
~CGame();

// ACCESSORS
ALLEGRO_DISPLAY *GetGameDisplay();
ALLEGRO_EVENT_QUEUE *GetGameEventQueue();

list<CComponent> GetComponents() { return *m_Components; }
void AddComponent(CComponent component);

bool IsRun();
void StartTimer();
void StopTimer();

virtual bool ShouldDraw();
virtual bool ShouldUpdate();
virtual void Update(void);
virtual void Draw(void);
virtual void Dispose();

protected:
virtual void RegisterEventSources();
virtual void Initialize();

private:
bool InitializeAllegro();

private:
ALLEGRO_DISPLAY *m_Display;
ALLEGRO_EVENT_QUEUE *m_EventQueue;
ALLEGRO_TIMER *m_Timer;
ALLEGRO_EVENT m_Event;

list<CComponent> *m_Components;
//CComponent *m_Components[MAX_COMPONENTS];

bool m_bIsRunning;
bool m_bShouldDraw;
};

#endif // _CGAME_H

而且,“CGame 类”是在“CGame.h”中声明和定义的,所以我真的不明白为什么......

最佳答案

您的 header 试图互相 #include - 您不能那样做。从组件头中删除游戏头的#include 并改用 CGame 的前向声明。

 CComponent(class CGame &game);

在设计方面,像这样的问题通常意味着你有问题。我认为组件不太可能了解它们所属的游戏。

关于c++ - 未知原因的编译器错误 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com