小编BFr*_*itz的帖子

unique_ptr的向量是什么?

我有一个我无法弄清楚的段错误问题.这是一个EntityManager我正在努力的小型游戏引擎.我可以添加Ship Entity,并且Ship可以添加1 Bullet Entity,但如果我尝试添加超过1,则会出现段错误Bullet.我一直试图在过去的一天里把这个想象成现实.以下是实际代码的一小段摘录.

#include <vector>
#include <memory>

struct EntityManager;
struct Entity {
    Entity(EntityManager* manager) : manager(manager) { }
    virtual ~Entity() { }
    virtual void update() = 0;

    EntityManager* manager;
};
struct EntityManager {
    void update() {
        for (auto& entity : entities) {
            entity->update();
        }
    }
    void add(Entity* e) {
        entities.emplace_back(e);
    }
    std::vector<std::unique_ptr<Entity>> entities;
};
struct Bullet : public Entity {
    Bullet(EntityManager* manager) : Entity(manager) { printf("Bullet ctor\n"); }

    virtual void update() override …
Run Code Online (Sandbox Code Playgroud)

c++ segmentation-fault stdvector game-engine unique-ptr

5
推荐指数
1
解决办法
893
查看次数