【发布时间】:2010-07-03 18:26:00
【问题描述】:
我注意到我经常需要一个容器类。例如,在处理粒子系统时,我创建了一个容器类Particles,它有一个成员vector<Particle*>。然后我调用:Particles* my_particles 和my_particles->draw() 一样,然后在Particles.draw() 中对vector<Particle*> 进行迭代,并在每个粒子上再次调用draw()。同样适用于update()、addforce() 等成员函数。现在,我正在做一个项目,需要一个Cube 的集合,我需要调用tween()、moveTowards() 等。
我知道我可以使用模板,但在模板类的情况下,成员函数需要事先知道。因为我想检查我是否可以创建一个通用类,例如我可以使用我的 Cubes 和 Particles 集合。
有谁做过这个或者可以给我一些建议吗?
亲切的问候, 波吕克斯
【问题讨论】:
-
你为什么没有类似的东西:
typedef std::vector<Particle> Particles然后void draw(Particles& p)等等?然后你可以做typedef std::vector<Cube> Cubes和void tween(Cubes& c, ...)...我认为这是更好的设计。 -
Polybos,我可以做到,但这不是我的问题的意思。虽然非常感谢您花时间回答!我认为斯蒂芬回答了我的问题!
-
为什么要存储指针?如果您不存储对象本身,则会将自己暴露在内存泄漏中。如果您需要多态性,您可以使用
boost::ptr_vector,它将为您管理内存。
标签: c++ algorithm stl containers