Hello all,

Trying to work on some code - a struct with spring variables is loaded into a vector in an insert function, but the vector is empty in later functions. I suspect it has something to do with scopes or something, but am relatively new to std::vectors.

I think it is a relatively simple problem, so will just post the bits of code related to the vector (rather than a runnable program). Apologies for any confusion, but there is also another 'Vector' class used in my program - to represent 3 variables in a row.

The 'add_spring' function says there is 1 spring with the correct coefficients, the 'forces' function says there are 0 springs (and consequently, no forces).Code:struct Spring { Vector equilPos; //represents equilibrium position of spring float k; //spring coefficient - represents tightness - high value makes them more rigid float b; //damping coefficient Spring(){ k=0; b=0; equilPos.zero(); } }; class PhysObj { public: //lots of unrelated functions / variables std::vector<Spring> springs; void add_spring(float springcoeff, float dampcoeff, float x, float y, float z); //calculate forces (where the spring variables are actually used) void forces(const State &state, float t, Vector &force, Vector &torque); } void PhysObj::add_spring(float springcoeff, float dampcoeff, float x, float y, float z){ Spring* tempspring = new Spring; tempspring->equilPos.x = x; tempspring->equilPos.y = y; tempspring->equilPos.z = z; tempspring->k = springcoeff; tempspring->b = dampcoeff; springs.push_back(*tempspring); std::cout << "spring created, now "<< springs.size() << " spring, k=" << springs[springs.size()-1].k << " b = "<< springs[springs.size()-1].b << std::endl; } void PhysObj::forces(const State &st, float t, Vector &force, Vector &torque) { //springs for (int i=0; i<springs.size(); i++){ Vector dampingforce = springs[i].b * st.vel; force == (-springs[i].k) * st.pos - springs[i].equilPos)) - dampingforce; } std::cout << "Force: " << force.x << ", " << force.y << ", " << force.z<< std::endl; std::cout << "Number of springs: " << springs.size() << std::endl; }

Can someone help?