gpt4 book ai didi

c++ - 如何创建具有未知成员函数的通用容器?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:08 25 4
gpt4 key购买 nike

我注意到我经常需要容器类。例如,在处理粒子系统时,我创建了一个容器类 Particles其中有一个成员 vector<Particle*> .然后我打电话:Particles* my_particles喜欢my_particles->draw() ,并在 Particles.draw()我迭代了 vector<Particle*>并调用draw()再次在每个粒子上。同样适用于成员函数,如 update() , addforce()等.. 现在,我正在做一个项目,需要一个 Cube 的集合我需要调用 tween() , moveTowards()等..

我知道我可以使用模板,但在模板类的情况下,需要先了解成员函数。因为我想检查我是否可以创建一个通用类,所以我可以同时使用我的 Cubes 和 Particles 集合。

有人以前做过这个或者可以给我一些建议吗?

亲切的问候,北河三

最佳答案

简短的回答是,您不能在 C++ 中执行此操作。但是,您可以使用 STL 算法和容器来封装此行为。

首先,您需要将 Cube 或 Particle 实例放入 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com