我创建了这个类,比如Apple
,它有一个超载的operator []
然后在另一堂课中,我制作了一系列苹果,Apple stack[10]
然后当我在表达式中使用stack[2]
而不是stack[2]
作为对象时,编译器的行为就像它将堆栈视为stack[0]
,然后调用operator []
和其参数为2
。
你可以建议一种我可以不用那种方式打电话给stack[2]
的方法吗?
答案 0 :(得分:1)
您可以使用指针来获取数组元素:
*(stack+2)[3]; // lookup element 2 and call its [] operator with 3
答案 1 :(得分:1)
根据目前为止提供的信息,stack[2]
指的是Apple
个对象。您也可以stack[2][5]
拨打operator[]
课程中重载的Apple
。
答案 2 :(得分:0)
提供代码会有所帮助。
但是,假设Apple类中有变量x
。您可以使用(stack+2)->x
访问它。这与stack[2].x
相同。如果您想使用重载运算符,可以类似地使用它。这不会混淆编译器。