我创建了这个类,比如说,Apple
它有一个重载的operator []
.
然后在另一堂课上,我做了一串苹果,Apple stack[10]
。
然后,当我stack[2]
在表达式中使用而不是stack[2]
对象时,编译器的行为就像将堆栈视为stack[0]
,然后将operator []
其及其参数称为2
。
你能建议一种我可以打电话stack[2]
而不是那样的方式吗?
我创建了这个类,比如说,Apple
它有一个重载的operator []
.
然后在另一堂课上,我做了一串苹果,Apple stack[10]
。
然后,当我stack[2]
在表达式中使用而不是stack[2]
对象时,编译器的行为就像将堆栈视为stack[0]
,然后将operator []
其及其参数称为2
。
你能建议一种我可以打电话stack[2]
而不是那样的方式吗?
您可以使用指针来获取数组元素:
*(stack+2)[3]; // lookup element 2 and call its [] operator with 3
根据迄今为止给出的信息,stack[2]
指的是一个Apple
对象。您也可以stack[2][5]
调用类中的重载对象。operator[]
Apple
提供代码会很有帮助。
但是,假设您x
在 Apple 类中有一个变量。您可以使用(stack+2)->x
. 这将与stack[2].x
. 如果你想使用你的重载运算符,你可以类似地使用它。这不会混淆编译器。