我有一个愚蠢的问题!假设您有一个在整个项目中使用的全局变量,并且您打算在它发生变化时执行某些操作,例如调用一个函数。
一种简单的方法是在每次更改后调用您的函数。但是,如果这个全局变量是库的一部分并将在外部使用怎么办。有没有更好的解决方案?
最佳答案
大概您想知道您的变量何时被修改, 不跟踪对它的引用并重写所有依赖于它的代码。
为此,将您的变量从现在的任何内容更改为重载 operator=
的类类型,并打印/记录/发生任何更改。例如,假设您目前拥有:
int global;
并想知道何时对global
进行更改:
class logger {
int value;
public:
logger &operator=(int v) { log(v); value= v; return *this; }
// may need the following, if your code uses `+=`, `-=`. May also need to
// add `*=`, `/=`, etc., if they're used.
logger &operator+=(int v) { log(value+v); value += v; return *this; }
logger &operator-=(int v) { log(value-v); value -= v; return *this; }
// ...
// You'll definitely also need:
operator int() { return value; }
};
并将 int global;
替换为 logger global;
以获取对 global
的所有更改的日志。
关于c++ - 如何找出全局变量是否已在 C++ 中更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14652900/