gpt4 book ai didi

c++ - 从属于同一类的对象中访问类变量

转载 作者:搜寻专家 更新时间:2023-10-31 02:12:52 24 4
gpt4 key购买 nike

我正在从头开始构建分子动力学模拟以练习我的新 C++ 技能,但我遇到了一些麻烦。

在模拟“盒子”对象中,我有一个包含系统长度的私有(private)变量 L。同样在“盒子”对象内部,我有一个“粒子”对象的 vector (不是以任何方式从“盒子”派生的)。 “粒子”对象包含粒子的归一化位置(每个维度中为 0 到 1)。我需要一种从“粒子”对象中访问 L 的方法。我需要这个,以便我可以用它来乘以规范化位置,以便在需要时获得实际位置(大多数时候使用规范化位置更方便)。

这种对 L 的访问应该是只读的,并且不会生成 L 的拷贝,而是所有粒子都应该引用同一个 L,以防它发生变化(例如,盒子被扩展)。

我想也许在初始化时将对 L 的常量引用传递给每个“粒子”对象。这真的是最好的方法吗?有没有一种方法不涉及将某些东西传递给其构造函数中的每个“粒子”对象? (因为我可能必须将更多这样的“状态变量”传递给每个“粒子”)

谢谢。

编辑:我正在附加代码并处理@1201ProgramAlarm 的建议,这似乎有道理但我在实现时遇到了问题:

Particle_Class.h

class Box_Class;
class point;
class Particle_Class
{
public:
Particle_Class(Box_Class &box);
private:
const Box_Class &box;
point velByL;
};

Particle_Class.cpp

Particle_Class::Particle_Class(Box_Class &box)
:box(box){}

void Particle_Class::init_P(const point pt){velByL=pt*box.get_L()/mass; return ;};

Box_Class.cpp

for (int i=0;i<initN;i++)
particle.emplace_back(*this);

不幸的是,我在 void Particle_Class::init_P 行遇到编译器错误

“错误:不完整类型‘const class Box_Class’的无效使用|”

最佳答案

可以将指向box对象的指针传递给particle对象,并在box中为L提供getter方法。该指针可以传递给 particle 的构造函数,并存储在对象中,或者可以传递给需要访问它的 particle 的成员函数。

关于c++ - 从属于同一类的对象中访问类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42120908/

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