如何在不使用 new 的情况下保持在其他对象中创建的对象存活?

阮孟

我正在用 C++ 编写一个游戏,我遇到了这个设计问题:

我有一个基类,Entity用于调用游戏中的所有对象。为了使用继承,我将指针存储在我的octree. 在我的游戏中,有些对象将由其他对象的方法创建。问题是:我可以在哪里存储以这种方式创建的对象,以便它在游戏期间保持不变,以便我存储的指针有效?

我不想使用,new因为我可能会以这种方式创建数百甚至数千个对象,而且我听说new很慢。

到目前为止,我提出的唯一方法是拥有一个存储所有这些对象的大向量。向量可能会被初始化为一个巨大的大小,这样它就不必调整自己的大小并弄乱我的指针。不过,这似乎相当愚蠢。

斯凯勒

第一:不要太担心性能。遵守一些基本规则,你会没事的:

  • 避免大对象的副本(通过指针或引用传递)
  • 当您有 < 50 个条目或不需要订购时,更喜欢矢量而不是地图和设置
  • 看看 std::algorithm 库为您提供了什么 - 这些函数通常很快并且经过测试

对你的项目来说最重要的是:考虑结构和设计

  • 使用清晰的界面
  • 对对象有单一的责任
  • 更喜欢组合而不是继承

至于你的具体问题:有一个“ObjectManager”类很好。作为第一个实现,向量也很好,只需将其隐藏为实现细节,以便以后需要时可以更改它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Ruby中创建对象而不使用new

来自分类Dev

如何在Ruby中创建对象而不使用new

来自分类Dev

如何在不使用new的情况下直接分配?

来自分类Dev

如何在不使用“ new”关键字的情况下启动课程?

来自分类Dev

如何在不使用reset和new的情况下使用纯抽象类的共享指针?

来自分类Dev

Ruby - 如何在没有 .new 的情况下创建 MatchData 对象?

来自分类Dev

如何在不使用IDE的情况下使用其他资源创建.jar文件

来自分类Dev

如何在不使用循环的情况下搜索在其键中包含给定字符串的对象?

来自分类Dev

在Kotlin中,杰克逊为何在某些情况下而不是在其他情况下无法解组未注释的对象

来自分类Dev

如何在不使用 ThisWorkbook 的情况下创建 App Events 对象?

来自分类Dev

如何在不使用其他变量的情况下防止“ useEffect”中无用的更新请求

来自分类Dev

如何在不使用整个地址的情况下链接到其他目录中的文件?

来自分类Dev

如何在不使用C#中的new关键字初始化变量的情况下用值填充数组变量?

来自分类Dev

Java在不使用静态对象的情况下跨其他对象共享对象的最佳方法

来自分类Dev

Swift:如何在不增强其他对象的情况下创建对它的引用?

来自分类Dev

如何在不将List包装在其他类中的情况下验证spring控制器中List中的每个对象?

来自分类Dev

创建对象的新实例而不使用“ new”

来自分类Dev

使用 new 和不使用 new 创建对象

来自分类Dev

如何在不使用jQuery的情况下将对象转换为对象数组?

来自分类Dev

在不使用其他框架的情况下如何在Java EE 6/7中使用MVC?

来自分类Dev

如何在不使用导入的情况下导入导入其他模块的模块*

来自分类Dev

如何在不使用include()的情况下从其他PHP脚本访问变量

来自分类Dev

如何在不使用导入的情况下导入导入其他模块的模块*

来自分类Dev

如何在不使用_collections或其他库的情况下订购字典?

来自分类Dev

如何在不使用匿名对象的情况下初始化列表初始值设定项中的对象?

来自分类Dev

JavaScript:如何在不使用for..in循环的情况下,从给定ID的对象数组中获取对象?

来自分类Dev

如何在不使用 @XmlRootElement 的情况下获取请求对象,用于其余服务中的 Java 对象

来自分类Dev

如何在不使用gcloud auth登录创建的凭据文件的情况下初始化GoogleCredentials对象

来自分类Dev

python2中int()对象如何在不使用__eq __()方法的情况下使用“ ==”运算符?

Related 相关文章

  1. 1

    如何在Ruby中创建对象而不使用new

  2. 2

    如何在Ruby中创建对象而不使用new

  3. 3

    如何在不使用new的情况下直接分配?

  4. 4

    如何在不使用“ new”关键字的情况下启动课程?

  5. 5

    如何在不使用reset和new的情况下使用纯抽象类的共享指针?

  6. 6

    Ruby - 如何在没有 .new 的情况下创建 MatchData 对象?

  7. 7

    如何在不使用IDE的情况下使用其他资源创建.jar文件

  8. 8

    如何在不使用循环的情况下搜索在其键中包含给定字符串的对象?

  9. 9

    在Kotlin中,杰克逊为何在某些情况下而不是在其他情况下无法解组未注释的对象

  10. 10

    如何在不使用 ThisWorkbook 的情况下创建 App Events 对象?

  11. 11

    如何在不使用其他变量的情况下防止“ useEffect”中无用的更新请求

  12. 12

    如何在不使用整个地址的情况下链接到其他目录中的文件?

  13. 13

    如何在不使用C#中的new关键字初始化变量的情况下用值填充数组变量?

  14. 14

    Java在不使用静态对象的情况下跨其他对象共享对象的最佳方法

  15. 15

    Swift:如何在不增强其他对象的情况下创建对它的引用?

  16. 16

    如何在不将List包装在其他类中的情况下验证spring控制器中List中的每个对象?

  17. 17

    创建对象的新实例而不使用“ new”

  18. 18

    使用 new 和不使用 new 创建对象

  19. 19

    如何在不使用jQuery的情况下将对象转换为对象数组?

  20. 20

    在不使用其他框架的情况下如何在Java EE 6/7中使用MVC?

  21. 21

    如何在不使用导入的情况下导入导入其他模块的模块*

  22. 22

    如何在不使用include()的情况下从其他PHP脚本访问变量

  23. 23

    如何在不使用导入的情况下导入导入其他模块的模块*

  24. 24

    如何在不使用_collections或其他库的情况下订购字典?

  25. 25

    如何在不使用匿名对象的情况下初始化列表初始值设定项中的对象?

  26. 26

    JavaScript:如何在不使用for..in循环的情况下,从给定ID的对象数组中获取对象?

  27. 27

    如何在不使用 @XmlRootElement 的情况下获取请求对象,用于其余服务中的 Java 对象

  28. 28

    如何在不使用gcloud auth登录创建的凭据文件的情况下初始化GoogleCredentials对象

  29. 29

    python2中int()对象如何在不使用__eq __()方法的情况下使用“ ==”运算符?

热门标签

归档