我会假设你的结构被命名为Fun
解决方案1:添加getter,setter和通知
我会写一个getter和上述结构的各个性能的制定者。它应该是这样的:
struct Fun {
Fun(System& sys): system{sys} {}
void setGun(int g) {
gun = g;
notify();
}
int getGun() {
return gun;
}
void notify() {
system.updated();
}
private:
System& system;
int gun;
};
当然,引用可以是一个指针,当然,你必须将分离结构的头和CPP文件。
解决方案2:写一个取得和结构玩转
这个解决方案的优点集为,这可能是最快的,当然最干净的一个。
struct System {
void setFun(Fun f) {
if (f != fun) {
// update only if different
updated();
}
// it may be faster if Fun allocates resources
fun = move(f);
}
// do not return by reference
Fun getFun() const {
return fun;
}
private:
Fun fun;
};
重载运营商没有任何与此有关的(至少,没有从根本上),并且检测_when_有事完全取决于你如何绕过您的系统事件和处理它们。当我不知道你的系统时,我无法告诉你该怎么做。但是,这可能吗?当然。 –
[观察成员变量值的变化]的可能的副本(http://stackoverflow.com/questions/10880253/observing-change-in-value-of-member-variable) – Kyle
看看运算符==,观察者模式,为初学者提供增强信号。 – Bathsheba