2012-08-11 18 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一樣。如果你想使用你的重載操作符,你可以使用它。這不會混淆編譯器。

相關問題