【发布时间】:2019-04-19 13:34:08
【问题描述】:
注意:重新上传错误标记为重复的问题
我正在使用 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 文件中的标头重新定义
【问题讨论】:
-
请张贴minimal reproducible example 而不是一些我们不能用来编译自己的文件。去掉所有不必要的声明和定义。
-
@RichardCritten 完成。对此感到抱歉
-
一旦问题有了答案,您不应更改主题或更改反映答案的代码。你应该问一个新问题。这个完成了。请记住
StackOverflow问题的主要目的是帮助未来的读者解决同样的问题。综上所述,最初的问题可能应该作为错字关闭。
标签: c++ include forward-declaration ogre