我正在尝试实现Rectangle类,它由两个表示矩形对角的点组成。 Point结构已经在头文件中声明。我不知道如何在Rectangle类的struct类中使用x,y。
是.h文件:
struct Point {
double x, y;
};
// Define your class below this line
class Rectangle
{
public:
Rectangle(double p.x, double p.y, double w, double h);
double getArea() const;
double getWidth() const;
double getHeight() const;
double getX() const;
double getY() const;
void setLocation(double x, double y);
void setHeight(double w, double h);
private:
Point p;
double width;
double height;
};
在.cpp中我初始化如:
Rectangle::Rectangle(double p.x, double p.y, double w, double h)
:(p.x),(p.y), width(w), height(h)
{
}
答案 0 :(得分:2)
你可以为这样的点构建一个构造函数:
struct Point {
double x, y;
Point(double xx, double yy): x(xx), y(yy){}
};
然后将矩形中的构造函数更改为:
Rectangle::Rectangle(double x, double y, double w, double h)
:p(x,y), width(w), height(h)
{
}
如果您使用的是c ++ 11,则还有其他选项。由于Point
是一个Aggregate结构,您可以像juanchopanza建议的那样对其进行初始化:
Rectangle::Rectangle(double x, double y, double w, double h)
:p{x,y}, width(w), height(h)
{
}
这样做的好处是,如果您选择这种方法,则不需要向Point
结构添加构造函数。