使用前向声明的类重定义问题

问题描述 投票:-1回答:1

注意:重新上载错误标记为重复的问题

我正在使用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文件中的头重新定义

c++ include forward-declaration ogre
1个回答
1
投票

ViewPort和Viewport在前向声明中的大小写是不同的。 C ++会将它们视为不同的值。

© www.soinside.com 2019 - 2024. All rights reserved.