Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 19.05.2010
Сообщений: 5

Перегрузка оператора ==

19.05.2010, 23:33. Показов 1639. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я уже встречала подобный вопрос на этом форуме, но у меня всё равно что-то не получается

Вот виртуальная ф-ция, которую я вызываю в перегрузке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void Plane::Str(char *str1)
{
    char st[20];
    int a1,b1,c1;
    Line::Str(str1);
    int d=Line::Get_X1();
    int d1=Line::Get_Y1();
    a1=y2-d1;
    b1=d-x2;
    c1=d1*(x2-d)-d*(y2-d1);
    sprintf(st, "a1=%d b1=%d c1=%d",a1, b1, c1);
    sprintf(str1, "%s%s",str1,st);
}
Вот моя перегрузка
bool Plane::operator ==( Plane C)
{
    Str(str);
    C.Str(str);
   for (int i = 0; str[i] == C.str[i]; i++)
   {
   if ((str[i] == NULL) && (C.str[i] == NULL)) 
       return true; 
   }
   return false; 
}
ну и
C++
1
2
3
4
5
6
7
8
void main()
{
        Plane *C= new Plane();
        Plane *C1= new Plane();
    if(C == C1)
    cout<<"C1 = C"<<endl;
    cout<<"C1 != C"<<endl;
}
Почему-то в цикл в перегрузке не заходит и сразу же выдает неравенство строк.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.05.2010, 23:33
Ответы с готовыми решениями:

Перегрузка оператора +
Добрый день)Почему то не работает перегрузка оператора сложения) #include &lt;iostream&gt; #include &lt;string&gt; #include...

Перегрузка оператора +
не получается в своем классе перегрузить оператор + :( пишет &quot;error C2804: бинарный &quot;operator +&quot; имеет слишком много...

Перегрузка оператора +=
Есть два класса: Vec4(вектор из 4х float) и Mat4(вектор из 4х Vec4). Проблема в том что при перегрузке в Mat4 операции += я получаю ошибку...

17
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
19.05.2010, 23:44
значит строки не равны
надо смотреть функции влияющие на str
0
Шаровик затейник
 Аватар для Crudelis
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
20.05.2010, 00:15
Цитата Сообщение от Vera_ Посмотреть сообщение
C++
1
2
Plane *C= new Plane();
 Plane *C1= new Plane();
что в данных строках хотели реализовать?
похоже на выделение памяти с ошибкой)

Добавлено через 49 секунд
Цитата Сообщение от Vera_ Посмотреть сообщение
if(C == C1)
я бы сделал так:
C++
1
if(strcmp(C,C1))
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
20.05.2010, 00:21
Цитата Сообщение от Crudelis Посмотреть сообщение
if(strcmp(C,C1))
C и C1 объекты типа Plane
0
0 / 0 / 0
Регистрация: 19.05.2010
Сообщений: 5
20.05.2010, 00:27  [ТС]
Так нужно же перегрузить оператор = =. Смысл тогда его перегружать, если использовать strcmp(C,C1)?

Plane *C= new Plane();
Plane *C1= new Plane();

Это выделение памяти. я брала его из примера работы с перегрузкой. Ошибку не показывеат..
0
Шаровик затейник
 Аватар для Crudelis
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
20.05.2010, 00:30
на сколько я помню память выделяется так
C++
1
Plane *C= new Plane[size];
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
20.05.2010, 00:31
Цитата Сообщение от Vera_ Посмотреть сообщение
if(C == C1)
какбэ надо *C == *C1;
не странно у них адреса разные
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
20.05.2010, 00:31
Цитата Сообщение от Vera_ Посмотреть сообщение
Это выделение памяти. я брала его из примера работы с перегрузкой. Ошибку не показывеат..
это понятно, не понятно что происходит в Plane()
конструктор есть?
0
Шаровик затейник
 Аватар для Crudelis
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
20.05.2010, 00:32
Цитата Сообщение от Vera_ Посмотреть сообщение
Смысл тогда его перегружать, если использовать strcmp(C,C1)?
я видел вы сравнивали две строки:

Цитата Сообщение от Vera_ Посмотреть сообщение
if(C == C1)
делается это с помощью
strcmp
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
20.05.2010, 00:32
Цитата Сообщение от alex_x_x Посмотреть сообщение
какбэ надо *C == *C1;
не странно у них адреса разные
действительно
0
0 / 0 / 0
Регистрация: 19.05.2010
Сообщений: 5
20.05.2010, 00:35  [ТС]
Конструктор вот
C++
1
2
3
4
5
6
7
Plane::Plane()
{
    cout<<"x2= ";
    cin>>x2;
    cout<<"y2= ";
    cin>>y2;
}
Про адреса не совсем поняла(
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
20.05.2010, 00:38
C++
1
2
3
4
5
6
7
8
9
10
void main()
{
        Plane C;
        Plane C1;
        if(C == C1){
          cout<<"C1 = C"<<endl;
        }else{
          cout<<"C1 != C"<<endl;
        }
}
0
0 / 0 / 0
Регистрация: 19.05.2010
Сообщений: 5
20.05.2010, 00:55  [ТС]
Пробовала, всё равно не получается(
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
20.05.2010, 01:04
я думаю едва ли можно нам тут разобраться, столько классов, методов и членов скрытых от нашего взора, я думаю тут все должно быть намного проще
1
0 / 0 / 0
Регистрация: 19.05.2010
Сообщений: 5
20.05.2010, 01:10  [ТС]
Эх, очень жаль. Но всё равно спасибо
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
20.05.2010, 01:28
Vera_, минуточку! Оператор == бинарный - то есть требует двух операндов, а Вы ему один подсунуть пытаетесь...
C++
1
bool operator == (const Plane & a, const Plane & b);
так как-то...
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
20.05.2010, 17:26
Цитата Сообщение от easybudda Посмотреть сообщение
Оператор == бинарный - то есть требует двух операндов, а Вы ему один подсунуть пытаетесь...
есть разные формы операторов - глобальные - описанные как у вас и классовые, описанные как у автора топика
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
20.05.2010, 18:17
Цитата Сообщение от alex_x_x Посмотреть сообщение
есть разные формы операторов - глобальные - описанные как у вас и классовые, описанные как у автора топика
Да я в курсе... Только классовая в этом случае чуднО вызывалась бы...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.05.2010, 18:17
Помогаю со студенческими работами здесь

Перегрузка оператора ++
выводит не то значение привет. нужна Ваша подсказка. листинг из учебника: (тема: перегрузка оператора ++) #include &lt;iostream&gt; ...

Перегрузка оператора []
Есть: class any{ char arr }

Перегрузка оператора
Добрый день! Мне нужно перегрузить в классе двумерного массива оператор ++, чтобы она возвращал максимальный элемент массива. класс...

Перегрузка оператора <<
Как вот в таком классе перегрузить оператор &lt;&lt;? #ifndef MATRIXX_H #define MATRIXX_H #include &lt;iostream&gt; using...

Перегрузка оператора[]
Пример взят из книги Лафоре, тема перегрузка операций. Выдает ошибки: 1.Требуется идентификатор. sa1 = i * 10; 2.Использование...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru