Допустим, у нас есть следующий сценарий (то, что я пробовал до сих пор в очень урезанной версии):
class A{
std::vector<int> ma;
};
class B{
A param;
// members that depend on "param"
int mb1;
// members that DO NOT depend on "param"
int mb2;
B(const A &p, const int &x) param(p), mb2(x) {
make_mb1();
};
void make_mb1(){
mb2 = std::accumulate(param.begin(), param.end(), 0);
};
};
int main{
A a({1,2,3});
B b1(a,1), b2(a,2), b3(a,3);
return 0;
}
Когда содержимое a
обновляется, я хотел бы, чтобы все экземпляры класса B
, которые имеют a
, чтобы обновлять себя соответствующим образом, поэтому я хочу, чтобы поведение было примерно таким:
int main{
A a({1,2,3});
B b1(a,...), b2(a,...), b3(a,...);
// first case
a = std::vector({4,5,6});
// b1, b2, b3 trigger an updated of members that depend on param
// second case
b1.param = std::vector({7,8,9});
// b1, b2, b3 trigger an updated of members that depend on param
return 0;
}
Как я могу это сделать, чтобы все, что мне нужно было делать как пользователь, было просто обновлять содержимое a
через его экземпляр (первый случай выше) или через любые экземпляры членов (второй случай выше), а затем b1,b2,b3
запускать внутреннее обновление (возможно, используя make_mb1
) членов автоматически без необходимости дополнительного кода в main
? Если это концепция с именем, я более чем счастлив просто получить имя, и я буду исследовать его (я пытался выяснить это, но не могу понять, как это будет называться, поэтому мне трудно выясняя, что искать).