Класс Point и Line в c ++? - PullRequest
       32

Класс Point и Line в c ++?

7 голосов
/ 19 февраля 2009

Я изучаю C ++ (и программирую в целом) и пытаюсь создать класс Point и класс Line.

Линия должна состоять из 2 точечных объектов.

Могут ли гуру C ++ просмотреть мою работу и сказать мне, если вы правильно используете указатели, ссылки и классы?

class Point
{
    private:
        int x, y;
    public:
        Point() : x(0), y(0) {}
        Point(int x, int y) : x(x), y(y) {}
}

class Line
{
    private:
        Point *p1;
        Point *p2;
    public:
        Line(Point &p1, Point &p2) : p1(p1), p2(p2) {}

        void setPoints(Point &p1, Point &p2)
        {
            this->p1 = p1;
            this->p2 = p2;
        }
}

Ответы [ 11 ]

0 голосов
/ 19 февраля 2009
class Line
{
    private:
        Point *p1; /* No memory allocated */
        Point *p2; /* No memory allocated */
    public:
        Line(Point &p1, Point &p2) : p1(p1), p2(p2) {}

        void setPoints(Point &p1, Point &p2) /* passed references to Point objects */
        {
            this->p1 = p1; /* asssiging Point objects to Point *! */
            this->p2 = p2; /* asssiging Point objects to Point *! */
        }
}

Функция setPoints () не будет работать - на первый взгляд. Должно быть

            void setPoints(Point &p1, Point &p2) 
            {
                this->p1 = &p1; /* asssiging Point objects to Point *! */
                this->p2 = &p2; /* asssiging Point objects to Point *! */
            }

Опять же, мы не можем контролировать разрушение p1 и p2. Лучше создать this-> p1 и this-> p2, используя данные в p1 и p2, чтобы деструктор контролировал память

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...