注意:重新上载错误标记为重复的问题
我正在使用Ogre,但我的问题特别在于名称空间。
我无法在这里找到帮助我的答案。
我正在尝试在我的头文件中为CameraController转发声明Ogre :: xyz类。
这是头文件
class Ogre;
class Ogre::SceneNode;
class Ogre::SceneManager;
class CameraController
{
private:
Ogre::SceneNode* camNode;
Ogre::SceneManager* scnMgr;
};
这是cpp文件
#include "CameraController.h"
#include <OgreSceneManager.h>
#include <OgreSceneNode.h>
... definitions of functions.
什么是实现我在这里尝试做的正确方法,避免在CameraController.h文件中包含不需要的头文件
试图修复
我尝试将重新定义标记为“重复”,其中讨论了在命名空间中声明类:
namespace Ogre
{
class SceneManager;
class SceneNode;
class Camera;
class Viewport;
class Real;
}
class CameraController
{
private:
Ogre::Real getAspectRatio();
private:
Ogre::SceneNode* camNode;
Ogre::Camera* camera;
Ogre::Viewport* viewPort;
Ogre::SceneManager* scnMgr;
};
编辑
所以我现在遇到的错误是我在Ogre命名空间中声明的类正被我包含在.cpp文件中的头重新定义
ViewPort和Viewport在前向声明中的大小写是不同的。 C ++会将它们视为不同的值。