【发布时间】:2019-01-01 08:12:20
【问题描述】:
我有一个模拟数组的 C++ 类,为了操作它的成员,我实现了两个函数:set(size_t index, size_t value) 和 get(size_t index)。我想重载 [] 运算符以具有以下功能:
MyCustomArray[index] = value //->set(size_t index, size_t value)
和
value = MyCustomArray[index] //->get(size_t index)
get 可以通过重载轻松实现,但我不知道如何实现set,因为我需要事先参数value。
我的类是一个固定字数组的实现(数组中的元素最多有 P 位,其中 P 是一个参数,它可以小于常规机器字)。为支持此功能,set 和get 操作常规 C/C++ 数组中值的位范围。
在这种情况下是否可能超载?
提前致谢!
【问题讨论】:
-
从
std::vector<bool>中获取灵感并返回一个自身重载operator =的临时代理对象。 -
@Quentin 应该有人慷慨地给它自己的名字,而不是让它成为
std::vector破坏通用代码的疣,但它是所需功能的一个很好的例子。 -
@PeteBecker 最后一段中的小玩意似乎阻止了这个简单的解决方案。
-
@Deduplicator 唉!但是,是的,仅用于演示目的。
-
@Quentin -- 好点。我没有从头到尾读完。 :-( 已删除。