c++ - 在游戏循环中创建类对象

标签 c++ class vector game-loop

我想知道在游戏循环中一次创建类对象的正确方法是什么?例如,我有 Box、Sphere、Cyllinder 类,我想在程序运行时在不同时间创建多个对象,并在将来使用它们。保存这些对象的正确方法是什么?将所有类组合为一个类中的 vector ?

vector<glm::vec3> initVerts = {/*verts position*/};

class Box
{
    vector<glm::vec3> verts;
    Box(): verts(initVerts)       
    void moveBox(glm::vec3 newPos){ /*translate verts*/ }
};

while ( !windowShouldClose())
{
     Box box; 
     box.moveBox(1.0,0.0,0.0); // on the second pass it was another box with initial position
}

最佳答案

最简单的方法是为每个类类型创建一个 vector 。开始:

std::vector<Box> boxes;
boxes.reserve(100); // however many you expect to need
Box& box1 = boxes.emplace_back();

while ( !windowShouldClose())
{
    box1.moveBox(1.0,0.0,0.0);
}

或者,如果您不需要一种方法来遍历所有对象,您可以将它们单独存储在循环之外:

Box box1;

while ( !windowShouldClose())
{
    box1.moveBox(1.0,0.0,0.0);
}

关于c++ - 在游戏循环中创建类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45766631/

相关文章:

c++ - 使用delete后指针是否指向栈或堆?

class - Flutter:类中初始化变量的差异

python - 类定义之外的类的新方法

python - 类从哪里获得它们的默认 '__dict__' 属性?

C++ 内存泄漏与 STL vector

c++ - 从 Vector 中删除元素

c++ - boost::asio::io_service 的 concurrency_hint 是什么意思?

c++ - VC/C++裸属性有什么作用?

c++ - 生成伪随机正定矩阵

c++ - 尝试在 C++ 中使用递归为模板化多项式类组合类似项