我想添加我的對象指針到矢量相同的時間對象被創建。目前我已經在對象的構造函數中完成了它,但是現在我已經聽說這是一種錯誤的方法,因爲在那個點上對象不是完全創建的。如何在C++中創建對象時將對象指針推向矢量?
的MyObject類的構造函數:
// MyObject constructor
MyObject::MyObject() {
// add object to vector of all objects
MyObjectManager::Instance()->objects.push_back(this);
}
myObject的是隻爲對象的基類。我也有從MyObject繼承的MyRectangle類,所以當我創建新的MyRectangle時,然後調用MyObject構造函數,並將我新創建的對象推入到MyObjectManager的向量中。
MyObjectManager是一個單例類,它保存所有對象的列表並非常頻繁地調用它們的虛擬繪製函數。這是問題嗎? MyObjectManager可能會在完全創建對象之前調用對象的Draw函數?
我可以做一個單獨的方法來添加對象向量。事情是這樣的:
MyObject::Create() {
// add object to vector of all objects
MyObjectManager::Instance()->objects.push_back(this);
}
但後來我不得不用這樣的:
MyRectangle *rect = new MyRectangle(0.5, 0.5, 0.1, 0.1);
rect->Create();
我只是希望能夠簡單地通過構造這樣的實例化新的對象:
MyRectangle *rect = new MyRectangle(0.5, 0.5, 0.1, 0.1);
_'calls他們的虛擬繪圖功能非常頻繁。這是問題嗎?'_很可能! –
你可以看看這個答案的有關在構造函數內調用虛函數的問題http://stackoverflow.com/a/3905886/356440 –