2

我有一个名为“OpenGLCamera”的类,还有另一个需要相机的类,所以目前他有 OpenGLCamera(因为该类被用作一种类型),如下所示:

void draw(const OpenGLCamera& camera);

但我希望它更通用,所以我希望它是

void draw(const SomeCamera& camera);

这个“SomeCamera”当然应该是OpenGLCamera的指针/引用或其他东西!

我有一个名为“Visual_settings”的类..我听说我应该使用继承来实现这一点......但我不明白如何......如何做到这一点?在 Visual_Settings 类中?使其成为...的基类,然后?

Visual_Settings.h

#include "OpenGLCamera.h"
class Visual_Settings : public OpenGLCamera
{

};

提前致谢

4

2 回答 2

1

您正在寻找的泛型类型SomeCamera应该OpenGLCamera从该类型派生SomeCamera。如果你不能这样做,那么你需要使用适配器模式。如果您有其他类型的相机,这将是有意义的。

    class SomeCamera
    {
    public:
        virtual void Dowork()=0;
    };

    class OpenGLCamera : public SomeCamera
    {
    public:
        virtual void Dowork() override
        {
            //use camera
        }
    };

//方法2(桥接模式):当不能修改OpenGLCamera时:

//***使用适当的构造函数/析构函数并根据需要初始化基类构造函数

    class SomeCamera
    {
    public:
        virtual void Dowork()=0;
    };

    class OpenGLCamera 
    {
    public:
       void OpenGlDowork() 
        {
            //use camera
        }
    };

    class OpenGLCameraAdapter : public SomeCamera, OpenGLCamera
    {
    public:
        virtual void Dowork() override
        {
            //use camera
            OpenGlDowork();

    }
};
于 2013-04-04T09:45:03.663 回答
0
  1. OpenGLCamera应该继承自SomeCamera.
  2. SomeCamera应该有接口,它将在OpenGLCamera.
于 2013-04-04T09:43:48.487 回答