C++结构问题,访问结构中的var

c++ struct trouble, access var within struct

本文关键字:结构 var 问题 C++ 访问      更新时间:2023-10-16

好的,所以下面我有一个 c++ 结构:

typedef struct tagRECTEx{
 int top;
 int bottom;
 int left;
 int right;
 int width=(this->right-this->left);
 int height;
} RectEx;

现在我希望它做的是,当我声明说 RextEx 窗口大小; 我分配 WindowSize.left=250 和 WindowSize.right=300,我希望它的位置 WindowSize.width 会为我减去它,所以当我去使用 cout <<"窗口宽度:"窗口大小.宽度;它将自动减去左右,即 50。

我不想这样做:

WindowSize.width=(WindowSize.right-WindowSize.left);

我希望通过以下方式为我做到这一点:

。 int width=(this->right-this->left);...

唯一的方法是如果我这样做:

typedef struct tagRECTEx{
 int top;
 int bottom;
 int left=250;
 int right=300;
 int width=(this->right-this->left);
 int height;
} RectEx;

但我不能让它这样做,因为它们总是会改变的。

有人可以帮我解决这个问题,因为我在过去的 5 个小时里一直在尝试在谷歌上在线找到这个。

谢谢

有几种方法可以确保width始终与左右"同步":

  • 使tagRECTEx不可变,并在构造函数中设置width,或者
  • 为所有变量添加 setter 函数,并在每次更改leftright时更新width,或者
  • 将变量替换为width()成员函数width如下所示:

int width() {
    return right-left;
}

我更喜欢最后一种方法,因为它通常更经济,并且因为它大大降低了在维护过程中引入错误的可能性。