• OGRE中Any 类型的实现


    OGRE中Any类型的实现

      OGRE中实现了一个class Any,使用Any 可以在上下文中传递任意类型的数据。其本质实现原理就是通过指针。

      Any 只包含一个成员变量,类型为 placeholder* 的 mContent。因为每个Any实例只包含一个统一类型为 placeholder的指针成员,从而使得每个 Any 实例大小一致,都为4字节。

      

      placeholder 是一个模板 base class,真实的数据存储在其每一个derived class中。placeholder 类存在的意义,就是为Any提供访问数据的统一接口。

      

      每一种数据类型,都会有继承于 placeholder 的各自子类。OGRE 通过提供泛型 class holder 来帮助实现这一功能。holder 类有一个成员变量, ValueType。

      

      从上面代码可以看到,具体的对象是存储在 holder<ValueType>中的。她的心 ValueType 的不同,每一个 holder<ValueType> 类型的实例的占用空间是一样的。而通过 placeholder* 基类指针则能统一访问。

      最后是 any_cast<ValueType>() 方法,该方法用于将返回 Any.mContent->held 的指针。只为 mContent 为 placeholder类型,所以使用前需要强转为 holdre<ValueType>* 类型的指针。

      

  • 相关阅读:
    Android:TabWidget
    Android之GridView
    Asp.Net页面生命周期
    Android笔记
    Adnroid单元测试
    GridView,ListView实例
    CSS
    C# ref,out
    有些经验是花钱都买不到的!
    数据库常用的sql语句
  • 原文地址:https://www.cnblogs.com/tekkaman/p/10398882.html
Copyright © 2020-2023  润新知