【发布时间】:2014-01-01 04:05:26
【问题描述】:
我试图在创建对象的同时将我的对象指针添加到向量中。目前我已经在对象的构造函数中完成了它,但现在我听说这是一种错误的方式,因为此时对象还没有完全创建。
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);
【问题讨论】:
-
'非常频繁地调用他们的虚拟绘图函数。是这个问题吗?'很可能!
-
关于在构造函数stackoverflow.com/a/3905886/356440中调用虚函数的问题,你可以查看这个答案
标签: c++