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

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

Войти
Регистрация
Восстановить пароль
 
eXPonent
 Аватар для eXPonent
43 / 43 / 2
Регистрация: 21.05.2012
Сообщений: 727
#1

Области видимости функций - C++

23.05.2014, 17:55. Просмотров 554. Ответов 4
Метки нет (Все метки)

Добрый день.
Написал класс, помогите найти ошибки

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
struct FIO
{
    string surname;
    string name;
    string patronymic;
};
 
class student
{
    public:
        student()
        {
            cout << "Фамилия: ";
            cin >> initials.surname;
            cout << "Имя: ";
            cin >> initials.name;
            cout << "Отчество: ";
            cin >> initials.patronymic;
            cout << "Возраст: ";
            cin >> age;
            cout << "Курс: ";
            cin >> course;
            cout << "Успеваемость: ";
            cin >> GPA;
        };
        void print(bool _edit = false)
        {
            if(_edit) cout << "1) ";
            cout << "Фамилия: " << initials.surname << endl;
            if(_edit) cout << "2) ";
            cout << "Имя: " << initials.name << endl;
            if(_edit) cout << "3) ";
            cout << "Отчество: " << initials.patronymic << endl;
            if(_edit) cout << "4) ";
            cout << "Возраст: " << age << endl;
            if(_edit) cout << "5) ";
            cout << "Курс: " << course << endl;
            if(_edit) cout << "6) ";
            cout << "Успеваемость: " << GPA << endl;
        };
        void edit()
        {
            print(true);
            cout << "Редактировать поле номер: ";
            int N;
            cin >> N;
            switch (N)
            {
                case 1:
                    cout << "Фамилия: ";
                    cin >> initials.surname;
                break;
                case 2:
                    cout << "Имя: ";
                    cin >> initials.name;
                break;
                case 3:
                    cout << "Отчество: ";
                    cin >> initials.patronymic;
                break;
                case 4:
                    cout << "Возраст: ";
                    cin >> age;
                break;
                case 5:
                    cout << "Курс: ";
                    cin >> course;
                break;
                case 6:
                    cout << "Успеваемость: ";
                    cin >> GPA;
                break;
                default:
                    cout << "Ошибка редактирования!";
            };      
        };
 
    private:
        FIO initials;
        int age;
        int course;
        double GPA;
    
};
 
typedef vector<student>::iterator iter;
 
class group_student: public student
{
    public:
        void push_bask(student _stud)
        {
            stud.push_bask(_stud);
        };
        void print()
        {
            for(iter _stud = stud.begin(); _stud != stud.end(); _stud++)
            {
                number_student(_stud);
                _stud.print();
            };                       
        };
        void edit(iter _stud)
        {
            number_student(_stud);
            _stud.edit();                   
        };
                        
    private:
        vector<student> stud;
        inline void number_student(iter _stud)
        {
            cout << "Студент №" << distance(stud.begin(), _stud) + 1 << endl;
        };
};
 
void main()
{
    setlocale(LC_ALL,"Russian");
 
// Тест
 
 
    system("pause");
};
Ошибки:
Кликните здесь для просмотра всего текста
ClCompile:
Lab№3.cpp
c:\documents and settings\artyr\рабочий стол\task№5\lab№3\lab№3.cpp(98): error C2039: push_bask: не является членом "std"
c:\documents and settings\artyr\рабочий стол\task№5\lab№3\lab№3.cpp(98): error C2039: push_bask: не является членом "std::vector<_Ty>"
with
[
_Ty=student
]
c:\documents and settings\artyr\рабочий стол\task№5\lab№3\lab№3.cpp(105): error C2039: print: не является членом "std::_Vector_iterator<_Myvec>"
with
[
_Myvec=std::_Vector_val<student,std::allocator<student>>
]
c:\documents and settings\artyr\рабочий стол\task№5\lab№3\lab№3.cpp(111): error C2039: edit: не является членом "std::_Vector_iterator<_Myvec>"
with
[
_Myvec=std::_Vector_val<student,std::allocator<student>>
]

СБОЙ построения.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2014, 17:55     Области видимости функций
Посмотрите здесь:

Оператор разрешения области видимости C++
C++ Подскажите пожалуйста, об области видимости объектов
C++ Инициализация вне области видимости
Нет декларации «EOF» в этой области видимости C++
Вызов функций. Зона видимости C++
C++ Классы, наследование, области видимости
C++ Вопрос об области видимости переменной
C++ Изменение области видимости функции
Возможно ли спрятать класс из области видимости? C++
C++ Области видимости
Как скрыть из области видимости часть методов базового класса после наследования? C++
C++ Расширение области видимости класса, за пределами цикла

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.05.2014, 18:17     Области видимости функций #2
Цитата Сообщение от eXPonent Посмотреть сообщение
push_bask: не является членом "std"
push_back().

Добавлено через 11 минут
Гед вы нашли в этом классе: vector<student>::iterator, эти методы: print(), edit()?
eXPonent
 Аватар для eXPonent
43 / 43 / 2
Регистрация: 21.05.2012
Сообщений: 727
23.05.2014, 19:03  [ТС]     Области видимости функций #3
его нужно разыменовывать?

Добавлено через 1 минуту
vector<student> stud;
C++
1
2
3
4
void push_bask(student _stud)
        {
            stud.push_bask(_stud);
        };
Правда не понимаю где тут ошибка
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.05.2014, 19:06     Области видимости функций #4
У vector нет метода push_bask(), есть:
Цитата Сообщение от alsav22 Посмотреть сообщение
push_back()
Цитата Сообщение от eXPonent Посмотреть сообщение
его нужно разыменовывать?
Его - кого? Итератор? Нет в этом классе таких методов.
eXPonent
 Аватар для eXPonent
43 / 43 / 2
Регистрация: 21.05.2012
Сообщений: 727
23.05.2014, 19:12  [ТС]     Области видимости функций #5
Осталась одна ошибка:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
struct FIO
{
    string surname;
    string name;
    string patronymic;
};
 
class student
{
    public:
        student()
        {
            cout << "Фамилия: ";
            cin >> initials.surname;
            cout << "Имя: ";
            cin >> initials.name;
            cout << "Отчество: ";
            cin >> initials.patronymic;
            cout << "Возраст: ";
            cin >> age;
            cout << "Курс: ";
            cin >> course;
            cout << "Успеваемость: ";
            cin >> GPA;
        };
        void print(bool _edit = false)
        {
            if(_edit) cout << "1) ";
            cout << "Фамилия: " << initials.surname << endl;
            if(_edit) cout << "2) ";
            cout << "Имя: " << initials.name << endl;
            if(_edit) cout << "3) ";
            cout << "Отчество: " << initials.patronymic << endl;
            if(_edit) cout << "4) ";
            cout << "Возраст: " << age << endl;
            if(_edit) cout << "5) ";
            cout << "Курс: " << course << endl;
            if(_edit) cout << "6) ";
            cout << "Успеваемость: " << GPA << endl;
        };
        void edit()
        {
            print(true);
            cout << "Редактировать поле номер: ";
            int N;
            cin >> N;
            switch (N)
            {
                case 1:
                    cout << "Фамилия: ";
                    cin >> initials.surname;
                break;
                case 2:
                    cout << "Имя: ";
                    cin >> initials.name;
                break;
                case 3:
                    cout << "Отчество: ";
                    cin >> initials.patronymic;
                break;
                case 4:
                    cout << "Возраст: ";
                    cin >> age;
                break;
                case 5:
                    cout << "Курс: ";
                    cin >> course;
                break;
                case 6:
                    cout << "Успеваемость: ";
                    cin >> GPA;
                break;
                default:
                    cout << "Ошибка редактирования!";
            };      
        };
 
    private:
        FIO initials;
        int age;
        int course;
        double GPA;
    
};
 
typedef vector<student>::iterator iter;
 
class group_student: public student
{
    public:
        void push_baсk(student _stud)
        {
            stud.push_baсk(_stud);
        };
        void print()
        {
            for(iter _stud = stud.begin(); _stud != stud.end(); _stud++)
            {
                number_student(_stud);
                _stud->print();
            };                       
        };
        void edit(iter _stud)
        {
            number_student(_stud);
            _stud->edit();                  
        };
                        
    private:
        vector<student> stud;
        inline void number_student(iter _stud)
        {
            cout << "Студент №" << distance(stud.begin(), _stud) + 1 << endl;
        };
};
 
void main()
{
    setlocale(LC_ALL,"Russian");
 
// Тест
 
 
    system("pause");
};
от тех избавился разыменованием

Добавлено через 2 минуты
alsav22, спасибо большое разобрался
Yandex
Объявления
23.05.2014, 19:12     Области видимости функций
Ответ Создать тему
Опции темы

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