I have declared a vector array of objects called bn of class Particle. For testing purposes, I started with one object-element in the array.
Class member functions:
void Particle::p(float pos_x, float pos_y, float mass)
{
    m = mass;
    x = pos_x;
    y = pos_y;
    velx = 0;
    vely = 0;
    radius = calc_rad();
}
float Particle::calc_rad()
{
    radius = 10 * cbrt(m / density);
    return radius;
}
void Particle::move(float t)
{
    x += velx * t;
    y += vely * t;
}
Class declaration:
class Particle
{
public:
    float m;
    float x;
    float y;
    float velx;
    float vely;
    float radius;
    float density = 100;
    void p(float pos_x, float pos_y, float mass);
    float calc_rad();
    void move(float t);
};
main():
int main()
{   
    std::vector <Particle> bn(1);
    
    bn[0].p(500, 500, 1);
    
    float t = 1;
    int it = 0;
    for(int j = 0; j < 10; j++)
    { 
        for (Particle i : bn)
        {   
            i.velx = 1;
            i.vely = 1;
            i.move(t);
            std::cout << i.x << std::endl;
        }
        
    }
}
I want to update the member variables x and y of objects in bn. But the values are not changing. I tried declaring a single object without any vectors and it works fine. But I need an array of objects. Can someone tell me what the issue is or whether I'm missing something?
Aucun commentaire:
Enregistrer un commentaire