问题描述
我对C ++有点陌生,我讨厌在需要将先前值存储在另一个变量中的情况下运行。所以我的问题是,我是否可以使变量在某种意义上存储两个值。我希望我能够调用以前存储的值并将其用于其他功能。
ex) 当前方式
os.system("echo 'q' >stop")
我想做什么
int x1 = 5;
int x2 = x1 + 5;
int diff = x2 - x1;
解决方法
以下是适合您特定用例的最小类:
struct Int {
int val = 0,old_val = 0;
Int(int i) : val(i) {}
operator int() { return val; }
void operator=(int i) { old_val = std::exchange(val,i); }
int old() { return old_val; }
};
,您可以这样使用它:
Int x = 5;
x = x + 7;
int diff = x - x.old(); // diff is 7
这里是demo。
请注意,此类非常少,在实践中,您将希望使Int
成为int
的模型,并且仅具有记住先前值的附加属性。