C++错误C2447?我错过了什么

C++ Error C2447? What am I missing

本文关键字:错过了 什么 错误 C2447 C++      更新时间:2023-10-16

我不知道我是疯了,还是我读到的关于这个错误的所有内容都不适用于我的情况。但我在编译我的项目时遇到了这些错误:

1>f:program filestestenginetestenginetestenginegame.cpp(10) : error C2061: syntax error : identifier '{ctor}'
1>f:program filestestenginetestenginetestenginegame.cpp(11) : error C2143: syntax error : missing ';' before '{'
1>f:program filestestenginetestenginetestenginegame.cpp(11) : error C2447: '{' : missing function header (old-style formal list?)
1>f:program filestestenginetestenginetestenginegame.cpp(15) : error C2059: syntax error : 'public'
1>f:program filestestenginetestenginetestenginegame.cpp(16) : error C2143: syntax error : missing ';' before '{'
1>f:program filestestenginetestenginetestenginegame.cpp(16) : error C2447: '{' : missing function header (old-style formal list?)

所以,我用谷歌搜索了这个错误,每个人都说这是由额外和/或缺少分号和括号之类的事情引起的。但我已经看了很多我的代码(没有太多!(,我没有看到任何这些,当然,除非,正如我之前所建议的,我快疯了。。。

Game.h

#ifndef _SBE_CGAME_
#define _SBE_CGAME_
class CGame
{
public:
    CGame();
    ~CGame();
    void DoLoop();
};
#endif //_SBE_CGAME_

Game.cpp

#include "base.h"
extern CGame* m_gGame;
CGame::CGame()
{
    //
}
~CGame::CGame()
{
    //
}
public void CGame::DoLoop()
{
    SwapBuffers(hDC);
}

Base.h

#include <windows.h>        // Header File For Windows ==NEEDS TO COME BEFORE GL.H AND GLU.H==
#include <glgl.h>
#include <glglu.h> 
#include "Properties.h"
#include "Game.h"
#include "Renderer.h"
#ifndef _SBE_BASE_
#define _SBE_BASE_
extern CGame* m_gGame;
#endif //_SBE_BASE_

全局.cpp

#include "base.h"
//=================================================================================
// Here is where we define all the global variables
//=================================================================================
CGame* m_gGame = new CGame();

我在俯瞰什么?我承认,我已经有一段时间没有编程C++了,但我重读了类定义文章和各种各样的东西。我有一种并不奇怪的感觉,这将是一件非常愚蠢的事情,我本应该看到。

在Game.cpp中:

~CGame::CGame()

应该是

CGame::~CGame()

并在CGame::DoLoop的定义上删除public关键字。

您需要为析构函数编写CGame::~CGame()而不是~CGame::CGame()。它总是首先是类名(CGame(,然后才是成员名(~CGame(。

#include <windows.h>        // Header File For Windows ==NEEDS TO COME BEFORE GL.H AND GLU.H==
#include <glgl.h>
#include <glglu.h> 
#include "Properties.h"
#include "Game.h"
#include "Renderer.h"
#ifndef _SBE_BASE_
#define _SBE_BASE_
extern CGame* m_gGame;
#endif //_SBE_BASE_

为什么你只包括保护这个文件的一部分?

#ifndef _SBE_BASE_
#define _SBE_BASE_
#include <windows.h>        // Header File For Windows ==NEEDS TO COME BEFORE GL.H AND GLU.H==
#include <glgl.h>
#include <glglu.h> 
#include "Properties.h"
#include "Game.h"
#include "Renderer.h"
extern CGame* m_gGame;
#endif //_SBE_BASE_

无论如何,我的猜测是Properties.h或Renderer.h 中有一些奇怪的东西

您错误地声明了析构函数

应该是

CGame::~CGame()
相关文章: