制作一个对象数组并在c ++中使用重载[]

时间:2012-08-11 18:45:41

标签: c++ arrays object operator-keyword

我创建了这个类,比如Apple,它有一个超载的operator [] 然后在另一堂课中,我制作了一系列苹果,Apple stack[10] 然后当我在表达式中使用stack[2]而不是stack[2]作为对象时,编译器的行为就像它将堆栈视为stack[0],然后调用operator []和其参数为2

你可以建议一种我可以不用那种方式打电话给stack[2]的方法吗?

3 个答案:

答案 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相同。如果您想使用重载运算符,可以类似地使用它。这不会混淆编译器。