Class 使用前向声明的重定义问题
Class redefinition problems using forward declarations
注意:重新上传错误标记为重复的问题
我正在使用 Ogre,但我的问题具体存在于名称空间中。
我在这里找不到对我有帮助的答案。
我正在尝试在我的 header 文件中为 CameraController 转发声明 Ogre::xyz 类。
这是header文件
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 文件
中包含不需要的 header 文件,实现我在这里尝试做的事情的正确方法是什么?
尝试修复
我尝试了 'duplicate' 中标记的重新定义,其中讨论了在命名空间中声明 类:
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 文件中的 header 重新定义
前向声明中ViewPort和Viewport的大小写不同。 C++ 会将它们视为不同的值。
注意:重新上传错误标记为重复的问题
我正在使用 Ogre,但我的问题具体存在于名称空间中。
我在这里找不到对我有帮助的答案。
我正在尝试在我的 header 文件中为 CameraController 转发声明 Ogre::xyz 类。
这是header文件
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 文件
中包含不需要的 header 文件,实现我在这里尝试做的事情的正确方法是什么?尝试修复
我尝试了 'duplicate' 中标记的重新定义,其中讨论了在命名空间中声明 类:
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 文件中的 header 重新定义
前向声明中ViewPort和Viewport的大小写不同。 C++ 会将它们视为不同的值。