C++ class 成员变量交互
C++ class member variables interaction
我有一个带有 2 个变量的 class。他们是public。
我想以这样的方式初始化它们,一个总是另一个的倍数,当我更新第一个时,另一个会自动更新。
在我的 class 声明中:
`
public:
Int variable1;
Int variable2 = (10*variable1);
`
当我更新 variable1 时,我想检查 variable2 的更新值是多少,并根据该结果做一些事情。
variable1++;
If (variable2 > 10)
{
//Do stuff
}
所以我知道我可以通过更新第二个变量来解决这个问题,但我知道必须有一种方法可以让他的第二个变量不断更新。问题显然在声明中,但 "const" 或 "static" 无济于事......我不认为。如果我能找到 eloquent 的方式来表达问题,我相信我能 google 找到答案。但是我不能!
你不能那样做。正确的做法是通过封装。
在下面的示例中,只需调用 getter 获取值(内联 = 与直接访问一样快)并且您只能修改 variable1
。您可以添加一个 set_variable2
方法,但它没有什么意义。
public:
inline int get_variable1() const { return variable1; }
inline int get_variable2() const { return variable1*10; }
inline void set_variable1(int new_value) { variable1=new_value; }
private:
int variable1;
干脆不要这样做...只创建一个变量并在需要时乘以它。
最好的方法是只要使用变量 2 就使用变量 1 的倍数
对于您的 if 语句,请使用
if((variable1 * 10) > 10){
//do stuff
}
我有一个带有 2 个变量的 class。他们是public。
我想以这样的方式初始化它们,一个总是另一个的倍数,当我更新第一个时,另一个会自动更新。
在我的 class 声明中:
`
public:
Int variable1;
Int variable2 = (10*variable1);
` 当我更新 variable1 时,我想检查 variable2 的更新值是多少,并根据该结果做一些事情。
variable1++;
If (variable2 > 10)
{
//Do stuff
}
所以我知道我可以通过更新第二个变量来解决这个问题,但我知道必须有一种方法可以让他的第二个变量不断更新。问题显然在声明中,但 "const" 或 "static" 无济于事......我不认为。如果我能找到 eloquent 的方式来表达问题,我相信我能 google 找到答案。但是我不能!
你不能那样做。正确的做法是通过封装。
在下面的示例中,只需调用 getter 获取值(内联 = 与直接访问一样快)并且您只能修改 variable1
。您可以添加一个 set_variable2
方法,但它没有什么意义。
public:
inline int get_variable1() const { return variable1; }
inline int get_variable2() const { return variable1*10; }
inline void set_variable1(int new_value) { variable1=new_value; }
private:
int variable1;
干脆不要这样做...只创建一个变量并在需要时乘以它。
最好的方法是只要使用变量 2 就使用变量 1 的倍数
对于您的 if 语句,请使用
if((variable1 * 10) > 10){
//do stuff
}