2013-03-26 123 views
0

我剛剛碰到這個代碼,我不知道它在做什麼,或者它是如何做它在做什麼數組初始化語法

pos[iter](1) += 12.0f/900.0f; 

請問(1)初始化在位置的數組值iter爲1,然後添加(12.0f/900.0f)到它?我無法相信它是在循環中用來設置調試文本的位置,每個循環將下一行設置爲高y值(屏幕上的較低點)。 iter可以是0或1,具體取決於調試文本所在的列表。

我會理解它是否是靜態操作。

+3

'pos'是如何定義的? – 2013-03-26 13:39:59

+1

爲了理解這一行,你必須包含'pos'聲明。它可能是一個函數指針的容器,例如 – 2013-03-26 13:41:36

+0

這裏重要的是它不是你以前從未見過的奇怪語法。它只是訪問一個數組然後調用一個函數。 – 2013-03-26 13:47:29

回答

5
pos[iter](1) += 12.0f/900.0f; 

pos可以是數組,地圖,或一個類的一個對象與一個重載operator[]pos[iter]返回一個對象(可能是函數指針,lambda或重載operator()的類),並用參數1調用它。函數調用很可能返回對返回對象的引用,因爲您可以使用+=對其值進行變異。

所以說清楚,(1)沒有訪問任何東西的第二個元素。這只是對具有該參數的函數或方法的調用。該方法返回一些對象,該對象具有適當的過載operator +=(可以是標量類或實際類)。

+3

它也可能是一個函數指針的指針......太多的可能性...... – PlasmaHH 2013-03-26 13:45:43