Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2011, 12:55   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию сравнение двух объектов одного класса

есть класс в классе есть три поля два из них массивы
Код:
class xyz
{
 public:
 //........
 //.........
 private:
    int x[200], y[200], z;
};
int main ()
{
xyz a;
xyz b;
while (1)
{
a.metod (......);//тут значения поля x должны увеличиватся на еденицу,
//с каждой интерацией пока хотябы одна, любая ячейка a.x[] не станет
// ровна любой ячейке b.x
}
}
как из объекта a посмотреть значения в полей в объекте b
если-бы поля класса небыли массивы, я бы просто написал метод возвращающий значение поля. НО тут массивы
как в этом случае лучше поступить?

Последний раз редактировалось SAMOUCHKA; 23.10.2011 в 13:03.
SAMOUCHKA вне форума Ответить с цитированием
Старый 23.10.2011, 13:01   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)можно написать метод возвращающий указатель на массив.
2)можно написать метод сравнения(в том числе можно перегрузить оператор сравнения)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.10.2011, 13:05   #3
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
1)можно написать метод возвращающий указатель на массив.
2)можно написать метод сравнения(в том числе можно перегрузить оператор сравнения)
второй вариан как?
SAMOUCHKA вне форума Ответить с цитированием
Старый 23.10.2011, 13:28   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тем более у вас есть метод metod
в него передавайте свой обьект b по ссылке, и уже в методе спокойно сравнивайте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.10.2011, 13:58   #5
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

SAMOUCHKA

сравнение двух объектов одного класса

Код:
class xyz
{
   friend bool operator== (const xyz& left, const xyz& right);
};

bool operator== (const xyz& left, const xyz& right)
{
   return
      std::equal(left.x, left.x+200, right.x) &&
      std::equal(left.y, left.y+200, right.y) &&
      left.z == right.z;
}
Судя по вопросам, пора уже открывать учебник по C++ :D
Rififi вне форума Ответить с цитированием
Старый 23.10.2011, 17:18   #6
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
есть класс в классе есть три поля два из них массивы
Код:
class xyz
{
 public:
 //........
 //.........
 private:
    int x[200], y[200], z;
};
int main ()
{
xyz a;
xyz b;
while (1)
{
a.metod (......);//тут значения поля x должны увеличиватся на еденицу,
//с каждой интерацией пока хотябы одна, любая ячейка a.x[] не станет
// ровна любой ячейке b.x
}
}
как из объекта a посмотреть значения в полей в объекте b
если-бы поля класса небыли массивы, я бы просто написал метод возвращающий значение поля. НО тут массивы
как в этом случае лучше поступить?
Это сделать просто. Вы одном объекте класса имеете доступ к полям другого объекта этого же класса, дежа если они закрытые. Поэтому вы можете написать любой метод, который в качестве параметра получает константную ссылку на другой объект этого класса, и читатьзначения его полей.

Например,

Код:
class xyz
{
 public:
    bool f( const xyz & ) const;
 //........
 //.........
 private:
    int x[200], y[200], z;
};

bool xyz::f( const xyz &rhs ) const
{
   if ( x[0] == rhs.y[0] ) return ( true );
   if ( x[199] = rhs.y[199] ) return ( flase );
   if ( x[0] + rhs.x[100] ) > 0 ) return ( true );

   return ( false );
}
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив объектов класса. zipwind Общие вопросы C/C++ 8 01.05.2011 20:56
динамический массив объектов класса. С++ Шиншилка Помощь студентам 8 25.04.2011 17:58
вектор объектов класса и алгоритмы РагнаР Общие вопросы C/C++ 3 10.04.2011 07:00
создание объектов класса Serjuk Общие вопросы C/C++ 8 13.05.2010 18:54
Коллекция объектов класса в С++ MarihuanaP Помощь студентам 2 09.05.2010 13:06