【发布时间】:2012-09-28 03:33:46
【问题描述】:
我有一个模板类,我正在为一个行为有点像 C++ STL 中的容器类之一的项目工作,但我在找出一种好的安全方法来实现它时遇到了一些问题。
一些背景知识:我正在尝试将一个名为 Artemis 的现有项目(一个实体系统框架)从 Java 移植到 C++。有一个名为 bag 的类,它本质上是一个 ArrayList,但它包含的项目存储在数组中并使用索引查找以便更快地访问,存储的元素大部分存储自己的索引,但这并不重要。
问题:好的,所以我有一个包含 T 数组(模板类型)的模板类。我的问题是 T 元素的返回。在我的T &Get(int index) 函数中,我想返回对给定索引处元素的引用,但我不知道如果该元素不存在该怎么办。我想返回类似 null 的东西,但这不起作用,因为 T 的类型不能保证是指针。我可以让容器类包含T*s,但是我会遇到一些奇怪的问题/复杂的事情,比如 int 和非指针 (std::string) 以及一些超出范围的项目(除非我复制了值? )。
有没有人有任何想法或知道内置 STL 容器如何解决这些问题? 我希望我已经足够清楚我的要求......
链接:
- File I am porting
- My work so far(不漂亮,请注意)
我正在移植的文件
提前谢谢你。
【问题讨论】:
标签: c++ templates stl containers