Ошибка C ++ C2447?Чего мне не хватает - PullRequest
2 голосов
/ 14 октября 2011

Я не знаю, схожу ли я с ума, или просто то, что я прочитал об этой ошибке, не относится к моей ситуации. Но я получаю эти ошибки при компиляции моего проекта:

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

Итак, я погуглил ошибку в Google, и все сказали, что это связано с такими лишними и / или пропущенными точками с запятой и скобками. Но я много раз просматривал свой код (его не так уж много!) И ничего такого не вижу, если, конечно, как я ранее говорил, я схожу с ума ...

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 <gl\gl.h>
#include <gl\glu.h> 

#include "Properties.h"
#include "Game.h"
#include "Renderer.h"

#ifndef _SBE_BASE_
#define _SBE_BASE_

extern CGame* m_gGame;

#endif //_SBE_BASE_

globals.cpp

#include "base.h"

//=================================================================================
// Here is where we define all the global variables
//=================================================================================
CGame* m_gGame = new CGame();

Что я пропускаю? Я признаю, это было давно с тех пор, как я запрограммировал C ++, но я перечитывал статьи с определениями классов и всякие вещи. У меня такое странное ощущение, что это будет что-то очень глупое, что я должен был увидеть.

Ответы [ 4 ]

9 голосов
/ 14 октября 2011

В Game.cpp:

~CGame::CGame()

должно быть

CGame::~CGame()

И опустите ключевое слово public в определении CGame::DoLoop.

5 голосов
/ 14 октября 2011

Вам нужно написать CGame::~CGame() вместо ~CGame::CGame() для деструктора. Сначала всегда указывается имя класса (CGame), а затем только имя члена (~CGame).

2 голосов
/ 14 октября 2011

вы неправильно объявили свой деструктор

должно быть

CGame::~CGame()
2 голосов
/ 14 октября 2011
#include <windows.h>        // Header File For Windows ==NEEDS TO COME BEFORE GL.H AND GLU.H==
#include <gl\gl.h>
#include <gl\glu.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 <gl\gl.h>
#include <gl\glu.h> 

#include "Properties.h"
#include "Game.h"
#include "Renderer.h"

extern CGame* m_gGame;

#endif //_SBE_BASE_

В любом случае, я думаю, что-то странное в Properties.h или Renderer.h

...