2012-08-11 42 views
0

我创建了这个类,例如,Apple,它有一个超载的operator []
然后在另一课上,我做了一堆苹果,Apple stack[10]
然后,当我在表达式中使用stack[2]而不是stack[2]作为对象时,编译器看起来像堆栈为stack[0],然后调用operator []及其参数为2制作一个对象数组并在C++中使用重载[]

你能否建议一种方法,我可以打电话stack[2]而不是这样?

+5

这似乎很奇怪; 'stack [2]'确实应该给你第三个'Apple'对象。您应该发布您的代码 - 最好是一个简化版本,其中只包含演示问题所需的代码。 – 2012-08-11 18:49:43

+0

哦,好的,那是另一个问题。我之所以没有发布这篇文章,是因为它是一个学校作业,而且是基于我们建立的prevoius作业的相当大的作业。感谢您的大力支持:D – teamaster 2012-08-11 19:04:50

回答

1

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

*(stack+2)[3]; // lookup element 2 and call its [] operator with 3 
1

根据所给出的信息,到目前为止,stack[2]Apple对象。你也可以通过stack[2][5]来调用Apple类的超载operator[]

0

提供代码会有帮助。

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