C++ 循环问题:从其自己的成员函数中访问对象集
我正在模拟一组相互作用的球体。 出于这个原因,我创建了一个类sphere,它存储其位置x-y-z,并有一个更新其位置的方法update()C++ 循环问题:从其自己的成员函数中访问对象集,c++,C++,我正在模拟一组相互作用的球体。 出于这个原因,我创建了一个类sphere,它存储其位置x-y-z,并有一个更新其位置的方法update() class cSphere { double x; double y; double z; void update() } 但是,此更新功能取决于其他球体的位置。我不知道如何最好地处理这个循环问题 我首先尝试的是在main()中创建一个std::vector*vec_spheres作为全局变量,并通过在cSphere.h中定义extern std::vec
class cSphere {
double x; double y; double z;
void update()
}
但是,此更新功能取决于其他球体的位置。我不知道如何最好地处理这个循环问题
我首先尝试的是在main()中创建一个std::vector*vec_spheres作为全局变量,并通过在cSphere.h中定义extern std::vector*vec_spheres在update()中访问它。但这当然不起作用
我现在正在考虑创建一个单例类,它返回一个指向*vec_spheres的指针,但这看起来也很粗糙
谢谢你的建议 根据德米特法,我不建议将这些知识作为
cSphere::update
的责任
相反,制作一个更高的实体(cSphereSimulation
,PhysicsEngine
,…?),它知道如何计算所有球体的新位置
在伪代码中:
struct cSimulation
{
std::vector<cSpheres> _spheres;
void update()
{
// calculations using all positions...
for (auto& sphere : _spheres)
sphere.update(newLocation);
}
// ...
struct-cSimulation
{
std::矢量球;
无效更新()
{
//使用所有位置进行计算。。。
对于(自动球体:_球体)(&U球体)
sphere.update(新位置);
}
// ...
开始尝试向函数传递一个包含所有其他球体的向量-void update(const std::vector&otherSpheres);
。我不建议使用单例,因为它隐藏了cSphere
对球体列表的依赖关系。