2011-12-16 64 views
1

這是我真的不明白的東西:我什麼都看不到,實際上使這種錯誤容易發生。編譯錯誤:''''之前'&'令牌

這裏的類:

namespace Engine_Main { 

class SceneManager 
{ 
public: 
    SceneManager(Engine& engine); 
    void createScene(); 
private: 
    Ogre::SceneManager * mSceneMgr; 
}; 


} 

隨着一些其他類以供參考:

#ifndef ENGINE_H 
#define ENGINE_H 

#include <OGRE/OgreSceneManager.h> 
#include <OGRE/OgreRoot.h> 
#include "scenemanager.h" 
#include "playerinput.h" 

namespace Engine_Main { 

class Engine 
{ 
public: 
    Engine(); 
    ~Engine(); 

    void initGameLoop(); 

    PlayerInput * getPlayerInput(); 
    PlayerMovement * getPlayerMovement(); 
    Ogre::Root * getOgreRoot(); 

private: 

    //fields 
    PlayerInput * mPInput; 
    PlayerMovement * mPMovement; 
    Ogre::Root * mRoot; 
    //methods 
    void registerInput(); 
    void createScene(); 
    void renderPosition(); 
}; 

} 

#endif // ENGINE_H 

#include "engine.h" 


namespace Engine_Main { 

    /**********/ 
    /* PUBLIC */ 
    /**********/ 

    PlayerMovement * Engine::getPlayerMovement() { 
     return mPMovement; 
    } 

    PlayerInput * Engine::getPlayerInput() { 
     return mPInput; 
    } 

    Engine::Engine() { 
     mPInput = new PlayerInput(); 
     mPMovement = new PlayerMovement(); 
     mRoot = new Ogre::Root("cfg/plugins.cfg", "cfg/engine.cfg", "cfg/engine.log"); 
    } 

    Engine::~Engine(){ 
     if (mPInput) { 
      delete mPInput; 
     } 

     if (mRoot) { 
      delete mRoot; 
     } 
    } 

    void Engine::createScene() { 

    } 

} 

我的問題

它是什麼,我做錯了嗎?

+1

你的問題是什麼? – 2011-12-16 18:34:58

+0

你可以發佈錯誤和行號嗎?這很容易。 – cppcoder 2011-12-16 18:36:38

回答

9

您是否遺漏了Engine的(向前)聲明"scenemanager.h"?當編譯器解析:

... 
SceneManager(Engine&); 
... 

它需要聲明Engine類型。在SceneManager課程申報之前,您可能需要一個前向聲明,如class Engine;

相關問題