C ++非成员函数,使用引用另一个类的类

时间:2019-03-04 02:40:18

标签: c++ inheritance composition

我有一个关于硬件的问题,我被困了好几个小时,似乎无法理解。很难说出我的实际问题,但我会尽力而为。如何使用引用另一个类的类使外部成员函数找到圆之间的距离?在下面的代码中:

//Header
class Point
{
public:
    Point();
    Point(int, int);
    Point(const Point& object);
    int getX() const;
    int getY() const;
    void setX(int);
    void setY(int);
    double calculate_area();
    void print() const;

private:
    int x;
    int y;
};

class Shape
{
public:
    Shape();
    double calculate_area();
    void print() const;

protected:
    double area;
};

class Circle : public Shape
{
public:
    Circle();
    Circle(const Point&, double);
    double getRadius() const;
    void setRadius(double);
    void calculate_area();
    void print() const;

private:
    double radius;
    Point center;
};

class RTriangle : public Shape
{
public:
    RTriangle();
    RTriangle(double, double);
    double hyp();
    void calculate_area();
    void print() const;

private:
    double side1;
    double side2;
};

inline double distance(Circle& other)
{
    return sqrt(pow(other.center.x, 2) + pow(other.center.y, 2));
}

#endif

//Implementation.cpp of what i think is important for you guys to see
Point::Point(int inX, int inY) // normal constructor
{
    x = inX;
    y = inY;
}

Point::Point(const Point &object) // copy constructor needed to use for center of circle
{
    x = object.x;
    y = object.y;
}
Circle::Circle(const Point& object, double inRad) // center is x & y... radius for circle
{
    center = object;
    radius = inRad;
}

我的外部成员函数(内联双倍距离)不起作用。这是我第一次尝试执行此操作,因此如果措辞不好,我深表歉意。我本质上是在尝试仅使用继承点中心的Circle类,并且在第一类中将点中心定义为x和y。有可能做这样的事情(特别是使用Point中心内的x和y)吗?我不知道是否可以通过中心访问x和y。

1 个答案:

答案 0 :(得分:0)

给出一个Point,Point中没有的函数可以使用示例中的公共getX()和getY()方法访问其x和y成员。

但是,Circle的中心成员不是公开的,也没有公开的访问者。最简单的解决方法是添加一个公共方法

Point getCenter(); //或点const&getCenter()(如果需要)

圈子。