类导致几百个错误的错误

时间:2012-12-03 18:11:52

标签: c++ class sfml

我班级的标题是

#ifndef _CENGINE_H
#define _CENGINE_H
#include "SFML\Graphics.hpp"
#include "CTextureManager.h"
#include "CTile.h"

class CEngine
{
private:
    //Create instance of CTextureManager
    CTextureManager textureManager;
    //Load textures
    void LoadTextures();
    //New tile
    CTile* testTile;

    bool Running; //Is running?
    sf::RenderWindow* window; //Create render window
public:
    CEngine(); //Constructor
    int Execute(); //Execute
    bool OnInit(); //On intialization
    void GameLoop(); //Main game loop
    void Render(); //Render function
    void Update(); //Update
};
#endif

现在给我的3个错误是:

  

cengine.h(8):错误C2236:意外的'class''CEngine'。你忘记了';'吗?

     

cengine.h(8):错误C2143:语法错误:缺少';'在'{'

之前      

cengine.h(8):错误C2447:'{':缺少函数头(旧式正式列表?)

我知道错误是显而易见的,但我看不出课程有问题。我可能真的很蠢,因为我很累。

1 个答案:

答案 0 :(得分:2)

这似乎是一个循环包含问题。 CTextureManager.hCTile.h是彼此包含还是CEngine.h

要解决此问题,请尽可能使用前向声明。例如,您的课程不需要包含CTile.h - 它看起来像:

#ifndef CENGINE_H
#define CENGINE_H
#include "SFML\Graphics.hpp"
#include "CTextureManager.h"


class CTile;    //forward declaration instead of include

class CEngine
{
private:
    //Create instance of CTextureManager
    CTextureManager textureManager;
    //Load textures
    void LoadTextures();
    //New tile
    CTile* testTile;

    bool Running; //Is running?
    sf::RenderWindow* window; //Create render window
public:
    CEngine(); //Constructor
    int Execute(); //Execute
    bool OnInit(); //On intialization
    void GameLoop(); //Main game loop
    void Render(); //Render function
    void Update(); //Update
};
#endif

与其他2个标题类似。

此外,_CENGINE_H不是有效的标识符 - 请注意我如何将其重命名为CENGINE_H