我注意到我经常需要一个容器类。例如,在处理粒子系统时,我创建了一个容器类Particles
,它有一个成员vector<Particle*>
。然后我调用:Particles* my_particles
likemy_particles->draw()
,在Particles.draw()
中,我迭代vector<Particle*>
并再次调用每个粒子上的draw()
对于成员函数,如update()
,addforce()
等,同样适用。现在,我正在做一个项目,需要一个Cube
集合,我需要在这个集合上调用tween()
,moveTowards()
等。
我知道我可以使用template,但是对于template类,成员函数需要事先知道。因为我想检查我是否可以创建一个泛型类,例如我可以同时使用Cubes和Particles集合。
以前做过或能给我一些建议的人?
谨致问候,
波卢斯
最佳答案
简而言之,你不能用c++来实现这一点但是,您可以使用stl算法和容器来包装此行为。
首先,将立方体或粒子实例放入std::vector
或其他容器(就像现在一样)。
然后将STL的std::for_each与std::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/