我怎样才能到达我的子类? C ++

时间:2015-03-28 20:24:03

标签: c++

在下面的代码中,我无法访问我的子类。我必须让我的子类在超类下继承它,但是超类不知道要指向什么,除非在它之前定义了子类。

class ParticleSystem
{
    Particle *ptr_to_particles;

    void update()
    {  // Loop through number of particles
       // and call their update method.
      ptr_to_particles[i].update();
    }
}

class Particle : public ParticleSystem      //Inherits ParticleSystem
{
    void update();
}

或者,如果有人能提出有关如何以不同方式进行操作的建议,我欢迎它。感谢。

2 个答案:

答案 0 :(得分:4)

我认为你应该重新考虑你的设计。 ParticleSystem应该 一些Particle(例如std::vector<Particle>)。 Particle ParticleSystem的类型似乎不正确。像这样的东西

class Particle
{
public:
    void update();
};

class ParticleSystem
{
public:
    void update()
    {
        for (auto particle : _particles)
        {
            particle->update();
        }
    }

private:
    std::vector<Particle*> _particles;
};

答案 1 :(得分:3)

你应该改变你的设计。 Particle不是ParticleSystem的逻辑子类型。 ParticleSystem只是Particle的组合,而不是Particle的超类型。

class Particle
{
    void update();
};

class ParticleSystem
{
    Particle* particles;
    void update()
    {
         // forall i
         particle[i].update();
    }
};
相关问题