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

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

Восстановить пароль Регистрация
 
eXPonent
 Аватар для eXPonent
43 / 43 / 2
Регистрация: 21.05.2012
Сообщений: 727
23.05.2014, 17:55     Области видимости функций #1
Добрый день.
Написал класс, помогите найти ошибки

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>>
]

СБОЙ построения.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 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
5282 / 4801 / 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     Области видимости функций
Ответ Создать тему
Опции темы

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