我想添加我的对象指针到矢量相同的时间对象被创建。目前我已经在对象的构造函数中完成了它,但是现在我已经听说这是一种错误的方法,因为在那个点上对象不是完全创建的。如何在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 –