zoukankan      html  css  js  c++  java
  • 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>* 类型的指针。

      

  • 相关阅读:
    show master status, show slave status中的Executed_Gtid_Set
    MySQL分库分表
    数据库的读锁和写锁在业务上的应用场景总结
    MySQL死锁分析
    Java接口幂等性
    MySQL读写分离原理
    mysql 安装参考
    关于我
    【2020五校联考NOIP #6】最佳观影
    【2020五校联考NOIP #6】三格缩进
  • 原文地址:https://www.cnblogs.com/tekkaman/p/10398882.html
Copyright © 2011-2022 走看看