Я работаю с Ogre, но мой вопрос касается именно пространств имен.
Я не смог найти ответ, который помог бы мне здесь.
Я пытаюсь переслать классы Ogre::xyz в моем заголовочном файле для CameraController.
Это заголовочный файл
#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
Компилятор все равно выдает ошибки.
Самое интересное одно: Viewport не входит в состав Ogre.