認識到SparklyUnicornBullet
實際上是一個成員函數,它返回一個PS2Sprite
對象。這返回PS2Sprite
有一個成員函數ScaleAbsolute
你想調用。所以你上面的代碼幾乎是正確的。你只是缺少()
的:
MagicalUnicornBullets[i].SparklyUnicornBullet().ScaleAbsolute(4,4);
這就是說,有一些東西是壞你的代碼。首先,你的聲明具有相同的名稱作爲對象的數組:
MagicalUnicornBullets MagicalUnicornBullets[25];
我覺得這是允許的,但它是如此邪惡和malmotivated,我甚至不能說,對於certian,因爲我無論其動機或合法性如何,都會拒絕任何此類代碼。你應該給數組不同的名稱:
MagicalUnicornBullets bullets[25];
接下來,你的循環初始化是不必要的。代碼:
MagicalUnicornBullets MagicalUnicornBullets[25];
通過調用每一個默認的構造函數創建的25 MagicalUnicornBullets
C風格的數組。所以,最容易做的事情是簡單地提供一個默認的構造函數,你想要做什麼:
struct MagicalUnicornBullets {
MagicalUnicornBullets();
// ...
};
MagicalUnicornBullets::MagicalUnicornBullets()
: onscreen(false)
{
SparklyUnicornBullet().ScaleAbsolute(4,4)
}
現在有沒有必要爲一個循環的。所有25個將按照你想要的方式構建和初始化。
最後,通常在C++中,最好不要使用C風格的數組,而是收集類如std::vector
。
`SparklyUnicornBullet`不是一個對象,它是返回`PS2Sprite`的函數原型。這是你問的嗎?您需要執行`PS2Sprite SparklyUnicornBullet;`(無`()`)來創建一個對象。然後你可以使用`ScaleAbsolute`方法。 – Naveen 2011-01-07 11:58:07