我創建了這個類,例如,Apple
,它有一個超載的operator []
。
然後在另一課上,我做了一堆蘋果,Apple stack[10]
。
然後,當我在表達式中使用stack[2]
而不是stack[2]
作爲對象時,編譯器看起來像堆棧爲stack[0]
,然後調用operator []
及其參數爲2
。製作一個對象數組並在C++中使用重載[]
你能否建議一種方法,我可以打電話stack[2]
而不是這樣?
我創建了這個類,例如,Apple
,它有一個超載的operator []
。
然後在另一課上,我做了一堆蘋果,Apple stack[10]
。
然後,當我在表達式中使用stack[2]
而不是stack[2]
作爲對象時,編譯器看起來像堆棧爲stack[0]
,然後調用operator []
及其參數爲2
。製作一個對象數組並在C++中使用重載[]
你能否建議一種方法,我可以打電話stack[2]
而不是這樣?
你可以使用指針來獲取數組元素:
*(stack+2)[3]; // lookup element 2 and call its [] operator with 3
根據所給出的信息,到目前爲止,stack[2]
指Apple
對象。你也可以通過stack[2][5]
來調用Apple
類的超載operator[]
。
提供代碼會有幫助。
但是,假設您在Apple類中有一個變量x
。您可以使用(stack+2)->x
訪問它。這與stack[2].x
一樣。如果你想使用你的重載操作符,你可以使用它。這不會混淆編譯器。
這似乎很奇怪; 'stack [2]'確實應該給你第三個'Apple'對象。您應該發佈您的代碼 - 最好是一個簡化版本,其中只包含演示問題所需的代碼。 – 2012-08-11 18:49:43
哦,好的,那是另一個問題。我之所以沒有發佈這篇文章,是因爲它是一個學校作業,而且是基於我們建立的prevoius作業的相當大的作業。感謝您的大力支持:D – teamaster 2012-08-11 19:04:50