Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Классы в Vc++

2.0K
24 мая 2006 года
BroKeR
163 / / 04.05.2006
Добрый вечер господа!Хочу задать Вам следующий вопрос:у меня есть класс Rect и функция BoundingRect(Rect,Rect)
Код:
class Rect
{
public:
    /* конструктор по умолчанию */
    Rect()
    {
        m_left=5;m_right=5;m_top=5;m_bottom=5;
    }
    /* конструктор с инициализацией */
    Rect(int x,int y,int z,int l)
    {
        m_left=x;m_right=y;m_top=z;m_bottom=l;
    }
    /* метод реализующий изменение размеров прямоугольника */
    void InflateRect(int x, int y, int z, int l)
    {
        m_left+=x;m_right+=y;m_top+=z;m_bottom+=l;
    }
    /*метод для второго задания*/
    void InflateRect(int x,int y)
    {
        m_left+=x;m_right+=x;m_top+=y;m_bottom+=y;
    }
    /* конструктор копирования */
    Rect(const Rect& refRect)
    {
        m_left=refRect.m_left;m_right=refRect.m_right;
        m_top=refRect.m_top;m_bottom=refRect.m_bottom;
    }
    /*метод SetAll для третьего задания*/
    void SetAll(int,int,int,int);
    void SetLeft(int);
    void SetRight(int);
    void SetTop(int);
    void SetBottom(int l);
    /*метод GetAll*/
    int GetLeft();
    int GetRight();
    int GetTop();
    int GetBottom();
private:
    /* данные члены */
    int m_left, m_right, m_top, m_bottom;
};

Rect BoundingRect(Rect, Rect);

так же даны два объекта r1 и r2 класса Rect,нужно используя функцию BoundingRect написать прямоугольник в который вписаны r1 и r2

Rect r1(1,2,3,4), r2(5,6,7,8),r3;
r3= BoundingRect(r1, r2);


причем объекты принимаются по значению.Спасибо!
9.4K
24 мая 2006 года
_nоrth_
99 / / 24.04.2006
Внутри класса Rect нужно определить

[COLOR=darkblue]friend Rect BoundingRect(Rect r1, Rect r2);[/COLOR]

и
 
Код:
Rect BoundingRect(Rect r1, Rect r2)
{
  Rect r;
  r.m_left = (r1.m_left <= r2.m_left ? r1.m_left : r2.m_left);
  r.m_top = (r1.m_top <= r2.m_top ? r1.m_top : r2.m_top);
  r.m_right = (r1.m_right >= r2.m_right ? r1.m_right : r2.m_right);
  r.m_bottom = (r1.m_bottom >= r2.m_bottom ? r1.m_bottom : r2.m_bottom);
  return r;
}
2.0K
24 мая 2006 года
BroKeR
163 / / 04.05.2006
я уже разобрался,правда другим методом,но спасибо,кстати не знаешь почему сайт не работал?
9.4K
24 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by BroKeR
я уже разобрался,правда другим методом,но спасибо,кстати не знаешь почему сайт не работал?

Наверно mike что-то нахимичил. :)

Но если всерьез, то не знаю. Пару месяцев тому сайт другого форума лежал больше недели.

P.S. В том методе параметры лучше бы передать по ссылке. Всего навсего нужно изменить заголовок ф-ии на BoundingRect(Rect &r1, Rect &r2);

2.0K
24 мая 2006 года
BroKeR
163 / / 04.05.2006
слушай это вторая часть задания не подскажешь как это сделать?
9.4K
24 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by BroKeR
слушай это вторая часть задания не подскажешь как это сделать?

Уже сказал. Всего навсего нужно поменять заголовок.

2.0K
25 мая 2006 года
BroKeR
163 / / 04.05.2006
Цитата:
Originally posted by _nоrth_
Уже сказал. Всего навсего нужно поменять заголовок.


Тоесть просто поменять заголовок функции а все остальное точно так же?Через friend?И кстати вопрос,читал что это не очень хорошая практика,использовать ссылки в классе,т.к. они модифицируют закрытые члены?

9.4K
25 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by BroKeR
Тоесть просто поменять заголовок функции а все остальное точно так же?Через friend?И кстати вопрос,читал что это не очень хорошая практика,использовать ссылки в классе,т.к. они модифицируют закрытые члены?

Да, только поменять.

На счет " не очень хорошая... ". Я знаю довольно много языков программирования, но столько страшилок я вместе взятых не слышал, как в одном С++. Хотя раньше только на указателей бочку катили. Что теперь и ссылки попали в немилость?

А как на счет переменных? Сними все класс? :D

242
25 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:

[QUOTE]Originally posted by BroKeR
я уже разобрался,правда другим методом,но спасибо,кстати не знаешь почему сайт не работал?


Originally posted by _nоrth_
Наверно mike что-то нахимичил. :)

Но если всерьез, то не знаю.
[/QUOTE]

переезд сервера на новую площадку со сменой айпи (С)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог