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

标签 c++

我试图在创建对象的同时将我的对象指针添加到 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/

相关文章:

c++ - Ubuntu 12.04 (amd64) 上 wxWidget 示例的链接问题

c# - 在 visual studio c++ 中绘制实时图形

c++ - C++ 中递归的减法倒数到零游戏模式

c++ - 编译器可以通过指向 volatile 的指针优化存储吗?

c++ - 游戏GUI库

C++编译错误 "expected constructor, destructor, or type conversion before ‘class’”

c++ - 如何在共享内存的同一区域上工作的两个进程之间共享锁?

c++ - 用于服务器-客户端配置管理的 API 或库

c++ - 使用CMake,Microsoft MPI和Visual Studio 2017-找不到mpi.h

c++ - 使用 Eigen 映射复杂矩阵