Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
alexSo94
140 / 4 / 1
Регистрация: 24.02.2013
Сообщений: 46
#1

Как перегрузить оператор - C++

25.04.2013, 16:20. Просмотров 677. Ответов 26
Метки нет (Все метки)

Вот написал функцию поиска студента по номеру группы. STL list
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
void find()
{
    setlocale( LC_ALL,"Russian" );
    if (students.empty()) cout<<"Нет студентов в списке";
    else
    {
int number;
cout<<"Введите искомую группу"<<endl;
cin>>number;
list <CStudent>::iterator location = find(students.begin(),students.end(),number);
if (location==students.end())
    cout<<"Ничего не найдено"<<endl;
else
{
    cout<<"Результат:"<<endl;
    if (location==students.begin())
        cout<<"Студент с заданной группой найден:"<<number<<endl;
    location->output();
}
    }
 
 
 
}
Дальше не фига не могу перегрузить оператор. Обьясните кто нибудь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.04.2013, 18:51     Как перегрузить оператор #21
alexSo94, ну вот как-то так, не компилил, если что-то вылезет скажи)

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
26
27
void find()
{
    setlocale( LC_ALL,"Russian" );
 
    bool flag(false);
    if (students.empty()) 
        cout<<"Нет студентов в списке";
    else
    {
        number_type number = G1;
        cout<<"Введите искомую группу"<<endl;
 
        list <CStudent>::iterator location(students.begin());
 
        while(location != students.end()){
            if(op.number_gender() == number){
                flag = true;
                cout<<"Результат:"<<endl;
                cout<<"Студент с заданной группой найден:"<<number<<endl;
                location->output();
            }
        }
 
        if (!flag)
            cout<<"Ничего не найдено"<<endl;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexSo94
140 / 4 / 1
Регистрация: 24.02.2013
Сообщений: 46
25.04.2013, 18:57  [ТС]     Как перегрузить оператор #22
Цитата Сообщение от yoghurt92 Посмотреть сообщение
alexSo94, ну вот как-то так, не компилил, если что-то вылезет скажи)

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
26
27
void find()
{
    setlocale( LC_ALL,"Russian" );
 
    bool flag(false);
    if (students.empty()) 
        cout<<"Нет студентов в списке";
    else
    {
        number_type number = G1;
        cout<<"Введите искомую группу"<<endl;
 
        list <CStudent>::iterator location(students.begin());
 
        while(location != students.end()){
            if(op.number_gender() == number){
                flag = true;
                cout<<"Результат:"<<endl;
                cout<<"Студент с заданной группой найден:"<<number<<endl;
                location->output();
            }
        }
 
        if (!flag)
            cout<<"Ничего не найдено"<<endl;
    }
}
Ругаеться на op
C++
1
2
c:\users\sany\documents\visual studio 2010\projects\newstudent\newstudent\newstudent.cpp(114): error C2065: op: необъявленный идентификатор
1>c:\users\sany\documents\visual studio 2010\projects\newstudent\newstudent\newstudent.cpp(114): error C2228: выражение слева от ".number_gender" должно представлять класс, структуру или объединение
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.04.2013, 19:01     Как перегрузить оператор #23
alexSo94,

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
26
27
void find()
{
    setlocale( LC_ALL,"Russian" );
 
    bool flag(false);
    if (students.empty()) 
        cout<<"Нет студентов в списке";
    else
    {
        number_type number = G1;
        cout<<"Введите искомую группу"<<endl;
 
        list <CStudent>::iterator location(students.begin());
 
        while(location != students.end()){
            if(location -> number_gender() == number){
                flag = true;
                cout<<"Результат:"<<endl;
                cout<<"Студент с заданной группой найден:"<<number<<endl;
                location->output();
            }
        }
 
        if (!flag)
            cout<<"Ничего не найдено"<<endl;
    }
}
alexSo94
140 / 4 / 1
Регистрация: 24.02.2013
Сообщений: 46
25.04.2013, 19:07  [ТС]     Как перегрузить оператор #24
Цитата Сообщение от yoghurt92 Посмотреть сообщение
alexSo94,

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
26
27
void find()
{
    setlocale( LC_ALL,"Russian" );
 
    bool flag(false);
    if (students.empty()) 
        cout<<"Нет студентов в списке";
    else
    {
        number_type number = G1;
        cout<<"Введите искомую группу"<<endl;
 
        list <CStudent>::iterator location(students.begin());
 
        while(location != students.end()){
            if(location -> number_gender() == number){
                flag = true;
                cout<<"Результат:"<<endl;
                cout<<"Студент с заданной группой найден:"<<number<<endl;
                location->output();
            }
        }
 
        if (!flag)
            cout<<"Ничего не найдено"<<endl;
    }
}
Блин не работает
Миниатюры
Как перегрузить оператор  
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.04.2013, 19:12     Как перегрузить оператор #25
alexSo94, тупонул

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
26
27
28
29
void find()
{
    setlocale( LC_ALL,"Russian" );
 
    bool flag(false);
    if (students.empty()) 
        cout<<"Нет студентов в списке";
    else
    {
        number_type number = G1;
        cout<<"Введите искомую группу"<<endl;
 
        list <CStudent>::iterator location(students.begin());
 
        while(location != students.end()){
            if(location -> number_gender() == number){
                flag = true;
                cout<<"Результат:"<<endl;
                cout<<"Студент с заданной группой найден:"<<number<<endl;
                location->output();
            }
 
            ++location;
        }
 
        if (!flag)
            cout<<"Ничего не найдено"<<endl;
    }
}
alexSo94
140 / 4 / 1
Регистрация: 24.02.2013
Сообщений: 46
25.04.2013, 19:17  [ТС]     Как перегрузить оператор #26
yoghurt92, спасибо тебе огромное. На досуге буду подробно разбирать итераторы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 19:19     Как перегрузить оператор
Еще ссылки по теме:

C++ Как правильно перегрузить оператор [] =
Как перегрузить оператор для своего класса? C++
C++ Как в классе перегрузить оператор двойного индексирование?
Как перегрузить оператор [] для двумерного массива? C++
Как перегрузить оператор = , чтобы ф-ция была дружественной C++

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

Или воспользуйтесь поиском по форуму:
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.04.2013, 19:19     Как перегрузить оператор #27
alexSo94, да сам недавно их прошел, удачи)
Yandex
Объявления
25.04.2013, 19:19     Как перегрузить оператор
Ответ Создать тему
Опции темы

Текущее время: 16:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru