我正在使用Ogre,但我的问题专门存在于名称空间中。
我无法在这里找到对我有帮助的答案。
我正在尝试在我的CameraController头文件中转发声明的Ogre :: xyz类。
这是头文件
#pragma once
#ifndef _CAMCONTROL_H_
#define _CAMCONTROL_H_
class Ogre;
class Ogre::SceneNode;
class Ogre::SceneManager;
class CameraController
{
public:
CameraController();
~CameraController();
CameraController(Ogre::SceneManager& scnMgrRef);
private:
Ogre::SceneNode* camNode;
Ogre::SceneManager* scnMgr;
};
#endif
这是cpp文件
#include "CameraController.h"
#include <OgreSceneManager.h>
#include <OgreSceneNode.h>
CameraController::CameraController()
{
scnMgr = nullptr;
camNode = nullptr;
}
CameraController::~CameraController()
{
delete camNode;
}
CameraController::CameraController(Ogre::SceneManager & scnMgrRef)
{
scnMgr = &scnMgrRef;
}
要避免在CameraController.h文件中包含不需要的头文件,在这里实现我要执行的操作的正确方法是什么
编辑
我尝试按照重复项中的标记进行重新定义:
#pragma once
#ifndef _CAMCONTROL_H_
#define _CAMCONTROL_H_
namespace Ogre
{
class SceneManager;
class SceneNode;
class Camera;
class ViewPort;
class Real;
}
class Ogre3DApplication;
const int INITIAL_CAM_X = 3000;
const int INITIAL_CAM_Y = 3000;
const int INITIAL_CAM_Z = 3000;
class CameraController
{
public:
CameraController();
~CameraController();
CameraController(Ogre::SceneManager& scnMgrRef, Ogre3DApplication& parent);
private:
Ogre::Real getAspectRatio();
private:
Ogre::SceneNode* camNode;
Ogre::Camera* camera;
Ogre::Viewport* viewPort;
Ogre::SceneManager* scnMgr;
};
#endif
编译器仍会引发错误。
最有趣的是,一个:视口不是Ogre的成员。