C ++与类的结构

时间:2014-11-23 22:15:42

标签: c++ class struct

我正在尝试实现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)
{

}

1 个答案:

答案 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结构添加构造函数。