Проблемы переопределения классов с использованием предварительных объявлений - PullRequest
0 голосов
/ 19 апреля 2019

ПРИМЕЧАНИЕ. Повторная загрузка вопроса, ошибочно помеченного как дубликат

Я работаю с Ogre, но мой вопрос находится непосредственно в пространствах имен.

Я не смог найти ответэто мне здесь помогает.

Я пытаюсь переслать объявление классов Ogre :: xyz в моем заголовочном файле для CameraController.

Это заголовочный файл

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

1 Ответ

1 голос
/ 19 апреля 2019

Заглавные буквы View P ort и View p ort в предварительной декларации различаются.C ++ будет рассматривать их как разные значения.

...