【发布时间】:2012-11-21 06:27:42
【问题描述】:
我的班级标题是
#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:意外的“类”“CEngine”。你忘了一个';'吗?
cengine.h(8):错误 C2143:语法错误:缺少 ';'在'{'之前
cengine.h(8): error C2447: '{' : 缺少函数头(旧式正式列表?)
我知道错误很明显,但我看不出课程有问题。我可能真的很愚蠢,因为我累了。
【问题讨论】:
-
查看您之前包含的头文件,您可能在其中一个文件中忘记了分号。
-
问题很可能出在您未显示的代码中。最有可能的罪魁祸首是 CTile 或 CTextureManager。检查这些标题是否缺少
; -
那实际上会产生那么大的影响吗?我以为它只会给我一个错误,告诉我我忘记了。
-
哇,果然如此。在我看来,所有错误都来自 CEngine 标头,因为它们需要对其进行初始化。我实际上忘记了 CTile 标题的最后一个方括号上的分号。谢谢!
-
请记住,预处理器只是将
#include指令替换为包含文件的实际内容,因此从实际编译器来看,它是一个单独的文件,它看到一个右大括号后跟关键字 @987654324 @ 之间没有分号。