我注意到我经常需要一个容器类。例如,在处理粒子系统时,我创建了一个容器类Particles,它有一个成员vector<Particle*>。然后我调用:Particles* my_particleslikemy_particles->draw(),在Particles.draw()中,我迭代vector<Particle*>并再次调用每个粒子上的draw()对于成员函数,如update()addforce()等,同样适用。现在,我正在做一个项目,需要一个Cube集合,我需要在这个集合上调用tween()moveTowards()等。
我知道我可以使用template,但是对于template类,成员函数需要事先知道。因为我想检查我是否可以创建一个泛型类,例如我可以同时使用Cubes和Particles集合。
以前做过或能给我一些建议的人?
谨致问候,
波卢斯

最佳答案

简而言之,你不能用c++来实现这一点但是,您可以使用stl算法和容器来包装此行为。
首先,将立方体或粒子实例放入std::vector或其他容器(就像现在一样)。
然后将STL的std::for_eachstd::mem_fun结合使用。
结果会是这样的:

  std::vector<Particle*> V;

  V.push_back(new Particle);
  V.push_back(new Particle);
  V.push_back(new Particle);
  V.push_back(new Particle);

  std::for_each(V.begin(), V.end(), std::mem_fun(&Particle::draw));

关于c++ - 如何创建具有未知成员函数的通用容器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3172418/

10-10 06:44