我已经实现了int
的集合。我想要[]
运算符的版本:
int
时需要rvalue
的用户。例如,当用户尝试读取集合中的给定位置时。如果此位置上的元素不存在,则应抛出异常。int&
时使用的lvalue
,用于在给定位置存储值。如果此位置的元素不存在,则函数应为其分配空间。这样做的惯用方法是什么?
答案 0 :(得分:2)
我不明白为什么你需要它 - AFAIK,左值可以转换为右值,所以一个int& operator[]
就足够了。
不可能有两个具有相同名称和相同参数列表的函数,即使它们具有不同的返回类型。
如果您确实需要两种方法,可以在其中一个应用程序中使用operator()
。
答案 1 :(得分:0)
您需要一个实现分配和转换的辅助类型
答案 2 :(得分:0)
这是不可能的,因为C ++中的任何表达式都必须依靠它自己的优点,它不会根据它所使用的上下文来改变它的类型或属性。
因此,如果有人写yourobject[5]
,那么无论是否继续将其作为更大表达式的一部分进行分配,这必须解决相同的问题。