c ++ не-функция, использующая класс, который ссылается на другой класс - PullRequest
0 голосов
/ 04 марта 2019

У меня есть вопрос HW, который я застрял в течение нескольких часов, и мне кажется, что он не имеет смысла.Трудно выразить словами мой актуальный вопрос, но я буду стараться изо всех сил.Как я могу заставить свою функцию внешнего члена найти расстояние между окружностью, используя класс, который ссылается на другой класс?В моем коде ниже:

//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.Можно ли сделать такую ​​вещь (в частности, использовать х и у, который находится внутри центра точки)?Я не знаю, возможно ли получить доступ к x и y через центр.

1 Ответ

0 голосов
/ 04 марта 2019

Для данной точки функции, не входящие в Point, могут обращаться к ее элементам x и y с помощью открытых методов getX () и getY () в вашем примере.

Однако центральный член Circle не является открытым и не имеетпубличные средства доступа.Самое простое исправление - добавить открытый метод

Point getCenter ();// или Укажите const & getCenter (), если хотите)

на Круг.

...