我有以下代码:


void BaseOBJ::update(BaseOBJ* surround[3][3])
{
    forces[0]->Apply(); //in place of for loop
    cout << forces[0]->GetStrength() << endl; //forces is an std::vector of Force*
}

void BaseOBJ::AddForce(float str, int newdir, int lifet, float lifelength) {

Force newforce;
newforce.Init(draw, str, newdir, lifet, lifelength);
forces.insert(forces.end(), &newforce);
cout << forces[0]->GetStrength();

}

现在,当我调用AddForce并以1的强度进行无穷大作用时,其cout为1。但是在调用update时,它仅输出0,就好像该作用力不再存在。

最佳答案

您正在 vector 中存储要强制的指针,但是该强制是局部函数。

您必须使用new在堆上创建。

Force* f = new Force;
forces.push_back(f);

09-25 18:01