gpt4 book ai didi

c++结构问题,在结构中访问var

转载 作者:行者123 更新时间:2023-11-30 01:20:51 27 4
gpt4 key购买 nike

好的,下面我有一个用 C++ 编写的结构:

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

} RectEx;

现在我希望它做的是当我声明时说 RextEx WindowSize;我分配 WindowSize.left=250 和 WindowSize.right=300,我想要它 WindowSize.width 会为我减去它,所以当我去使用 cout << "Window Width: "WindowSize.width;它将自动减去 right 和 left,这将是 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 个小时我一直在尝试在 Google 上在线找到它。

谢谢

最佳答案

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

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

int width() {
return right-left;
}

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

关于c++结构问题,在结构中访问var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18891901/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com