c ++ struct trouble,在struct中访问var

时间:2013-09-19 10:11:31

标签: c++ struct initialization auto assign

好吧,下面我在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个小时一直试图在谷歌上找到这个。

谢谢

1 个答案:

答案 0 :(得分:5)

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

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

int width() {
    return right-left;
}

我更喜欢这种方法,因为它通常更经济,并且因为它大大降低了在维护期间引入错误的可能性。