我正在從頭開始構建分子動力學模擬以練習我的新C++技巧,並且遇到了一些麻煩。從屬於同一類的一部分的對象中訪問類變量
在模擬盒子對象中,我有一個包含系統長度的私有變量L. 也'內'對象我有一個'粒子'對象的矢量(不是以任何方式從'框'派生)。 「粒子」對象包含粒子的標準化位置(每個維度0到1)。 我需要一種方法來訪問'粒子'對象內的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);
不幸的是我在該行無效Particle_Class得到一個編譯錯誤:: init_P
「錯誤:無效的使用不完全類型的 '常量類Box_Class' |」
你可以在你的文章中包含你的代碼嗎?它可以讓你更容易得到答案 – RGA