Я создаю моделирование молекулярной динамики с нуля, чтобы попрактиковаться в своих новых навыках C++, и у меня возникли некоторые проблемы.Доступ к переменной класса из объектов, входящих в один класс
Внутри объекта «box» моделирования у меня есть частная переменная L, которая содержит длину системы. Также внутри объекта «ящик» у меня есть вектор объектов «частиц» (не полученный каким-либо образом из «окна»). Объект «частицы» содержит нормализованное положение частицы (от 0 до 1 в каждом измерении). Мне нужен способ доступа к L изнутри объекта «частицы». Мне нужно это, чтобы я мог использовать его, чтобы умножить нормализованное положение, чтобы получить фактическое положение, когда это необходимо (нормализованное положение удобнее работать в большинстве случаев).
Этот доступ к L должен быть доступен только для чтения, а не генерировать копию L, но все частицы должны ссылаться на один и тот же L в случае его изменения (например, окно расширяется).
Я думал о том, что, возможно, переходя к каждому объекту частицы, является константной ссылкой на L, когда они инициализируются. Действительно ли это лучший способ? Есть ли способ сделать это, который не связан с передачей чего-либо каждому объекту «частицы» в его конструкторе? (потому что мне, возможно, придется передать еще много таких «переменных состояния» каждой «частице»)
Спасибо.
Edit: Я прилагаю код и решение @ предложение 1201ProgramAlarm «s, который, кажется, имеет смысл, но у меня были проблемы, реализующие:
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
"Ошибка: неправильное использование неполного типа 'Const класса Box_Class' |"
Можете ли вы включить свой код в свой пост? Это может облегчить вам получение ответа. – RGA