gpt4 book ai didi

c++ - 在 C++ 中创建对象时如何将对象指针推送到 vector ?

转载 作者:行者123 更新时间:2023-11-30 00:51:48 25 4
gpt4 key购买 nike

我试图在创建对象的同时将我的对象指针添加到 vector 中。目前我已经在对象的构造函数中完成了它,但现在我听说这是一种错误的方法,因为对象在那个时候还没有完全创建。

MyObject 类构造函数:

// MyObject constructor
MyObject::MyObject() {
// add object to vector of all objects
MyObjectManager::Instance()->objects.push_back(this);
}

MyObject 只是对象的基类。我还有从 MyObject 继承的 MyRectangle 类,所以当我创建新的 MyRectangle 时,MyObject 构造函数被调用,我新创建的对象被推送到 MyObjectManager 的 vector 中。

MyObjectManager 是一个单例类,它保留所有对象的列表并非常频繁地调用它们的虚拟 Draw 函数。那是问题所在吗? MyObjectManager 可能会在对象完全创建之前调用对象的 Draw 函数?

我可以制作单独的方法来将对象添加到 vector 中。像这样:

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);

最佳答案

您可以在构造函数中执行此操作,不是吗?

MyRectangle::MyRectangle(const float& a, const float& b, const float& c, const float& d) {
this->Create();
}

关于c++ - 在 C++ 中创建对象时如何将对象指针推送到 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20565631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com