【发布时间】:2022-01-01 04:54:36
【问题描述】:
所以我刚刚创建了一个构成矩形的结构。结构本身看起来像这样
struct _rect
{
//bottom left vertex
int x = 0;
int y = 0;
// width and height
int width = 0;
int height = 0;
//top right vertex
int y2 = y + height;
int x2 = x + width;
};
//init rect
_rect rect01;
rect01.x = rect01.y = 50;
rect01.width = rect01.height = 200;
在主cpp中,当我想创建它的一个实例时,我只想输入左下角x和y,加上宽度和高度,我希望它自己计算右上角的顶点,有没有办法分配x2和 y2 他们的价值观没有手动这样做?
【问题讨论】:
-
你从你的结构名称开始未定义的行为:以下划线开头的名称被保留在全局命名空间中......
-
你能解释一下 x2,y2 的需要吗?矩形需要一个点和高度和宽度来绘制
-
Constructor是这里的关键字:struct Rect { Rect(int x, int y, int w, int h) : x(x), y(y), width(w), height(h), y2(y+h), x2(x + w) { } };- 但请注意,如果您更改其中一个成员,成员不会自动更新 - 我会这样做仅当您将所有这六个值设为const或将它们设为private并提供适当的 getter 和 setter 为您进行更新时,才可以这样做。否则,我宁愿提供x2和y2作为按需进行必要计算的函数。选择哪一个?取决于用例,但在大多数情况下取决于功能。 -
@463035818_is_not_a_number 你是对的,删除了这个建议
-
@Mo_AminKiaee,问题是,为什么需要存储
x2和y2?为什么不即时计算它们呢?一个矩形完全由四个数字指定(x 和 y 以及宽度和高度,或者 x1,y1 和 x2,y2。)存储六个数字是多余的,如果有人在没有修改代码的情况下修改代码,则会增加程序中出现错误的风险了解代码的哪一部分负责确保这六个数字彼此一致。