C++类成员变量交互

标签 c++ class variables declaration

我有一个包含 2 个变量的类。他们是公开的。

我想以一种始终是另一个的倍数的方式初始化它们,并且当我更新第一个时,另一个会自动更新。

在我的类(class)声明中:

`

public:

Int variable1;
Int variable2 = (10*variable1);

` 当我更新 variable1 时,我想检查 variable2 的更新值是多少,并根据该结果做一些事情。

variable1++;
If (variable2 > 10)
{
//Do stuff
}

所以我知道我可以通过更新第二个变量来解决这个问题,但我知道必须有一种方法可以让他的第二个变量不断更新。问题显然在声明中,但“const”或“static”无济于事……我不认为。如果我能找到一种 Eloquent 方式来表达问题,我相信我可以用谷歌搜索答案。但我不能!

最佳答案

你不能那样做。正确的做法是通过封装。

在下面的示例中,只需调用 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;

关于C++类成员变量交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38412840/

相关文章:

c++ - 用于将 RGB 图像转换为灰度图像的共享内存 Cuda

c++ - 测量使用预编译库(C++、Linux)的程序的总 CPU 时间

c++ - 在游戏中实现漫游行为

c# - 如何将我的 SQL 连接放在一个单独的类中? C#

c++ - 切换大小写后如何阻止变量重置?

c++ - 简单的 C++ 声音 API

c++ - 我如何使用带有类的数组

python - 在 python 中使类数据可继承的正确方法是什么?

带/不带选项的 BASH 脚本和参数

c# - 在html中的C#标签中使用变量,使用asp.net