Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Сравнение структур в языке 'С'

Ответить
Настройки темы
C/C++ - Сравнение структур в языке 'С'

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


Почему две структуры можно переписать обычным присвоением structA=structB, а вот сравнить нельзя if(structA==structB)
?

Отправлено: 09:23, 19-04-2008

 
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


на С присвоить тоже нельзя. На C++ можно и присвоить и сравнить. Дело в том, что по правилам если не указано конструкторов, то автоматически генерируются следующие:
Код: Выделить весь код
struct A
{
   ~A() выполняет для всех членов member деструктор ~member()
    A()   выполняет для всех членов member неявный конструктор без параметров member()
    A(const A&) то же самое, для всех членов
    A& operator=(const A&) то же самое, для всех членов
}
а вот operator== не определён, потому что сравнивать можете с чем угодно. Например:
Код: Выделить весь код
struct A
{
    bool operator==(int n) {return n==0;}
    bool operator==(const double& n) {return n<0.;}
    friend bool operator==(const A&, const A&) {return false;}
}

A a, b;
// будет работать:
if (a==b || a==1 || b==-0.5) {...}

// не будет работать, т.к. оператор не определён:
// if (a!=b || a!=1 || b!=-0.5) {...}
Если вы хотите добавить возможность сравнения к уже готовым структурам, например POINT, которая определена в windows.h, напишите:
Код: Выделить весь код
bool operator==(const POINT& a, const POINT& b) {return a.x==b.x && a.y==b.y;}
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:30, 21-04-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Сравнение структур в языке 'С'

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
.NET - [решено] C# to C++ dll: Маршалинг(?) массива структур XCodeR Программирование и базы данных 4 22-01-2010 10:18
ПО на Румынском Языке CtrlSoft Программное обеспечение Windows 18 04-12-2007 18:01
запись структур в VС++ Drey Программирование и базы данных 17 03-03-2004 02:27
CD на русском языке Tatiana Microsoft Windows 95/98/Me (архив) 4 17-12-2002 19:26




 
Переход