【发布时间】:2016-11-24 23:44:15
【问题描述】:
我正在尝试实现一个“安全数组”类来练习运算符重载。我已成功重载 '[]' 运算符以返回正确的对象引用。
我的安全数组的一个要求是指向项目的指针将支持指针算法,例如,给定一个指向arr[i] 的指针,我将能够通过*(&(arr[i]) + 1) 访问arr[i+1]。安全数组也必须保护此操作,并且在尝试访问越界对象的情况下将引发异常。
实现这一目标的最佳方法是什么?
【问题讨论】:
-
您需要将其作为“安全迭代器”类的一部分来实现。
-
你需要让
operator[]返回一个可以重载operator&的类类型的对象。 -
@thecohenoam:您将使用与原始数组和指针相同的运算符。您可以使用转换运算符转换为您需要的值。它并不完美,但大多数情况下都有效。
标签: c++ templates pointers operator-overloading