代码之家  ›  专栏  ›  技术社区  ›  Mi Po

在C++中从基本对象转换为派生对象

  •  0
  • Mi Po  · 技术社区  · 4 年前

    我试图将代码部分抽象为独立于平台的。

    我有一段代码正在创建基类的对象 IModel

    std::shared_ptr<IModel> joint_model_3d = std::make_shared<IModel>();
    

    我有另一段代码负责呈现。为了呈现对象,我需要将其转换为派生类 Direct3DModel

    class Direct3DModel : public IModel
    

    dynamic_cast Direct3DModel公司 动态播放 回到 用于渲染。

    伊莫代尔 在平台无关的代码中,这是不应该知道的 当我需要渲染时。

    我需要某种不依赖于平台的对象创建者类吗?

    1 回复  |  直到 4 年前
        1
  •  3
  •   R Sahu    4 年前

    我的问题是,我可以创建基类的对象吗 IModel Direct3DModel ,并将其转换为 Direct3DModel公司

    不,那不行。

    Factory Pattern

    独立于平台的代码必须使用基类指针和引用( 伊莫代尔 Direct3DModel公司 对象,您可以使用 dynamic_cast 在特定于平台的代码中获取指向 继续执行特定于平台的逻辑。

    我需要某种不依赖于平台的对象创建者类吗?