0

我创建了这个类,比如说,Apple它有一个重载的operator [].
然后在另一堂课上,我做了一串苹果,Apple stack[10]
然后,当我stack[2]在表达式中使用而不是stack[2]对象时,编译器的行为就像将堆栈视为stack[0],然后将operator []其及其参数称为2

你能建议一种我可以打电话stack[2]而不是那样的方式吗?

4

3 回答 3

1

您可以使用指针来获取数组元素:

*(stack+2)[3]; // lookup element 2 and call its [] operator with 3
于 2012-08-11T19:36:59.090 回答
1

根据迄今为止给出的信息,stack[2]指的是一个Apple对象。您也可以stack[2][5]调用类中的重载对象。operator[]Apple

于 2012-08-11T19:48:43.097 回答
0

提供代码会很有帮助。

但是,假设您x在 Apple 类中有一个变量。您可以使用(stack+2)->x. 这将与stack[2].x. 如果你想使用你的重载运算符,你可以类似地使用它。这不会混淆编译器。

于 2012-08-11T20:33:53.707 回答