Tengo una clase llamada Spring en un sistema de partículas. El constructor se ve como:Referencia al elemento en el vector 2d (C++)
Spring(Particle& _a, Particle& _b);
Y tengo un vector de Partículas y utilizo
Spring mySpring = Spring(myParticles.at(j),myParticles.at(j+1));
dentro de un bucle para agregar una fuerza elástica entre dos partículas. Todo funciona bien hasta ahora. Sin embargo, quiero usar un vector 2d de Partículas. Es decir:
Spring mySpring = Spring(myParticles.at(i).at(j),myParticles.at(i).at(j+1));
Y no consigo una referencia a la partícula. En el primer ejemplo, cada vez que cambio la partícula en mi clase de primavera, la partícula en el vector cambia. En el segundo ejemplo, los cambios son solo locales. ¿Cómo puedo cambiar las partículas en el Vector 2D?
EDIT: trato de hacer algunas cosas claras:
tengo algunos sistemas de partículas y cada uno de ellos consta de un número de partículas. Cada partícula solo debería interactuar con las otras partículas que están en el mismo sistema que ella. Por lo tanto, tengo un vector de sistemas de partículas con cada sistema de partículas como vector de objetos de partículas. (Eso hace que el vector 2d). La primera dimensión (i) es el sistema, la segunda (j) la partícula individual. Las partículas en el sistema interactúan entre sí (colisionan, evitan, lo que sea ...) y cambian sus posiciones. Y el vector se "actualiza". (Es decir, la referencia funciona).
Sin embargo, tengo un segundo (1d) vector de fuerzas de resorte. La fuerza del resorte también se usa para actualizar las posiciones de las partículas. Mi constructor hace lo siguiente:
Spring::Spring(Particle& _a, Particle& _b) {
a=&_a;
b=&_b; }
Con A y B siendo Partículas *. Así que guardo punteros a dos partículas en el vector 2d. Otra función Spring.doSpring() cambia las posiciones de las partículas.
a->pos.x=300;
o
a->velocity+=something..
En el primer ejemplo que he publicado utilicé sólo un sistema de partículas y así que no había necesidad de un vector 2d. Y todo funciona bien Las partículas en el vector se actualizan. Pero con el segundo ejemplo mi programa se ejecuta pero de alguna manera no importa lo que haga la función doSpring, las partículas en el vector 2d no se actualizan.
¿Cómo declara "myParticles"? – coelhudo
Oye, un consejo de http://www.drdobbs.com/cpp/184401863: "No overlegislate la denominación, pero sí utiliza una convención de nomenclatura consistente: solo hay dos cosas que debes hacer: a) nunca utilizar" nombres descuidados " , "unos que comienzan con un guión bajo o que contienen un doble guión bajo"; Palabras de Herb Sutter y Andrei Alexandrescu – coelhudo