0
對於下面的代碼片段,如何使用變量(如x,y,type)初始化類Enemy的實例?我已經正確地工作了,它會觸發實例,無論它插入了多少個實例......我只需要知道創建敵人的最佳方式,其中某些變量對於我的每個實例都會有所不同......特別是當某些這些變量在基類中,而其他變量則不在。使用特定變量值初始化派生類
class BaseObject
{
public:
virtual void Render() = 0;
int x;
int y;
};
class Enemy : public BaseObject
{
public:
Enemy() { }
virtual void Render()
{
cout << "Render! Enemy" << endl;
}
typedef std::set<BaseObject *> GAMEOBJECTS;
GAMEOBJECTS g_gameObjects;
int main()
{
g_gameObjects.insert(new Enemy());
g_lootObjects.insert(new Loot());
for(GAMEOBJECTS::iterator it = g_gameObjects.begin();
it != g_gameObjects.end();
it++)
{
(*it)->Render();
}
for(GAMEOBJECTS::iterator it = g_lootObjects.begin();
it != g_lootObjects.end();
it++)
{
(*it)->Render();
}
return 0;
}
謝謝!這是完美的。多麼奇怪的語法......你介意爲我澄清爲什麼一個類型:x(x),y(y){}部分? x(x)中的第一個和第二個x對應什麼,空虛曲的用途是什麼? – motioneffector 2011-03-16 18:39:50
@motioneffector:起初看起來可能很奇怪,但你會變得喜歡它。與其他一些語言相比,它真的很不錯。 – GWW 2011-03-16 18:40:39
括號表示調用對象的構造函數_squigglies_是函數的主體,在這種情況下是類的空構造函數。這被稱爲初始化器列表,並且是在構造函數中爲成員變量初始化執行賦值的更高效等效。 – AJG85 2011-03-17 22:01:45