程序崩溃将指针放入向量

时间:2014-10-30 09:54:12

标签: c++ pointers vector

之前已经问过这个问题,但即使在做了一些研究之后,我对答案也一无所知。当我将一个对象的指针发送到一个向量时,我的程序崩溃了。这段代码是导致它的原因,特别是我将射弹添加到矢量的地方。

void WorldManager::spawnProjectile (int x,int y,int speedx,int speedy){
    //LaserBulletProjectile proj(x,y,speedx,speedy);
    Projectile *proj;
    proj = new LaserBulletProjectile(x,y,speedx,speedy);
    projectiles->push_back(proj);
}

和矢量

std::vector<Projectile * > * projectiles;

我听说三(三个?)的规则并且不明白。是否可以尝试以一种初学者友好的方式解释这一点?我可能会过度思考:)

此外,经过更多阅读后,我认为这是因为指针未被释放。我还没有写过这个,因为我的代码还没有机会。 (我还没有任何这个工作,我想我以后可以这样做。也许这就是问题。)

2 个答案:

答案 0 :(得分:2)

您需要分配矢量:

projectiles = new std::vector<Projectile*>;

在您尝试添加内容之前!

答案 1 :(得分:1)

三国统治: -

If your class needs any of

a copy constructor,
an assignment operator,
or a destructor,

明确定义,然后它可能需要所有这三个。