2012-06-04 132 views
2

我想要获得关于修改某些类成员变量(可能是原始的或用户定义的)的通知。观察成员变量值的变化

任何人都可以让我知道如何做到这一点。

感谢

多一点澄清我的问题:

我的情况有点像

我已经现有的菜单和菜单项。现在我将所有这些菜单项放在工具栏上。因为当这些菜单项在菜单项内部时,我得到事件ON_UPDATE_COMMAND_UI,在那里我调用一个函数并更新菜单项状态。

但现在的工具栏,我不得不放在每次检查状态的函数,变量(这是很多的数量,也得到修改在许多国家,我无法控制)。

任何人都可以建议我一些很好的选择,而不必更改现有的代码,因为它非常脆弱。

有什么办法可以从语言/编译器中获得一些变量更改通知,例如Watch变量在Visual Studio调试器中的工作方式。

+2

[你有什么试过?](http://whathaveyoutried.com) – Zeta

+2

是否用于调试?在正常使用过程中记录?这是您需要添加到软件的永久功能吗?你的问题非常非常含糊。 –

回答

3

您可以制作变量private并通过getter/setter公开的方法访问它。将打印或自定义声明放入这些getter/setter中。
例如: -

class A { 
private: 
    int x; 
public: 
    int getx() const { /* your code */ ; return x; } 
    void setx (const int i) { /* your code */; x = i; } 
}; 
+0

这不会***通知任何变化,这是明确地检查状态(*你怎么知道什么时候调用getters?*)还是我误会了? –

+1

@Als,是的。 getter/setter是非常常见的实践,可以很容易地实现。必须在需要时将自定义代码写入其中。没有矫枉过正,但调试简单。这里通知将以用户定义的方式进行,即打印,声明或用户选择的任何内容。 – iammilind

+1

Q是***如何通知变量的任何变化?*** OP特别说**通知**。简而言之,我不认为这提供了OP要求的功能。它提供了一种方法检查某些类成员的值,但不会收到任何通知。 –