在下面的代码中,我无法访问我的子类。我必须让我的子类在超类下继承它,但是超类不知道要指向什么,除非在它之前定义了子类。
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();
}
或者,如果有人能提出有关如何以不同方式进行操作的建议,我欢迎它。感谢。
答案 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();
}
};