c++ - 使用前向声明的类重定义问题
问题描述
注意:重新上传错误标记为重复的问题
我正在使用 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 文件中的标头重新定义
解决方案
前向声明中的 View Port 和 View port的大小写不同。C++ 会将它们视为不同的值。
推荐阅读
- terraform - Terraform 删除旧的 AWS Lambda 层版本而不是创建新版本
- css - 在 react.js 中单击按钮时如何更改按钮图标
- angular - 单击任何产品时在网格内插入其他产品
- machine-learning - 在 mlr 中调整分类阈值
- java - Grails/GORM 动态查找器通过其关系 ID 而不是关系对象本身获取域
- ios - iPhone XR 和 iPhone XS 的 Peek and Pop
- autodesk-forge - Autodesk 的 adsk-icon-* 类
- android - Places.GeoDataApi setResultCallback 不起作用
- powerbi - 拥有 Power Bi Premium 时的 Power Bi Report 服务器许可证
- html - 使方形 div 与右上角对齐,负 50 像素且响应式