好吧,下面我在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<< “窗口宽度:”WindowSize.width;它会自动减去右边和左边的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个小时一直试图在谷歌上找到这个。
谢谢
答案 0 :(得分:5)
有几种方法可以确保width
始终与左右同步“
tagRECTEx
不可变,并在构造函数中设置width
,或width
或left
时更新right
或width
成员函数替换width()
变量,如下所示:
int width() {
return right-left;
}
我更喜欢这种方法,因为它通常更经济,并且因为它大大降低了在维护期间引入错误的可能性。