Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
1

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

23.05.2014, 17:55. Просмотров 842. Ответов 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>>
]

СБОЙ построения.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2014, 17:55
Ответы с готовыми решениями:

Области видимости
Если я запихиваю любые операции (в данном случае задание и заполнение массива); То далее не видит,...

Классы, наследование, области видимости
A.h: #ifndef A_H #define A_H #include &quot;C.h&quot; class C; class A { private:

Оператор разрешения области видимости
Только начинаю изучать ООП. Объясните где и как применяется оператор разрешения области видимости.

Вопрос об области видимости переменной
У меня в проге один главный цикл и в этом цикле еще 4 цикла. Так вот, в начале главного цикла я...

Изменение области видимости функции
Здравствуйте, имеется вопрос по наследованию: Пусть имеется некоторый класс A c функцией func ...

4
alsav22
5450 / 4845 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.05.2014, 18:17 2
Цитата Сообщение от eXPonent Посмотреть сообщение
push_bask: не является членом "std"
push_back().

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

Добавлено через 1 минуту
vector<student> stud;
C++
1
2
3
4
void push_bask(student _stud)
        {
            stud.push_bask(_stud);
        };
Правда не понимаю где тут ошибка
0
alsav22
5450 / 4845 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.05.2014, 19:06 4
У vector нет метода push_bask(), есть:
Цитата Сообщение от alsav22 Посмотреть сообщение
push_back()
Цитата Сообщение от eXPonent Посмотреть сообщение
его нужно разыменовывать?
Его - кого? Итератор? Нет в этом классе таких методов.
1
eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
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, спасибо большое разобрался
0
23.05.2014, 19:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 19:12

Инициализация вне области видимости
Здравствуйте! Работаю над деревом, в котором есть две структуры: struct file { public: string...

Подскажите пожалуйста, об области видимости объектов
Привет, есть небольшой вопрос: не могу разобраться с ООП, помогите пожалуста. Например, есть...

Возможно ли спрятать класс из области видимости?
Здравствуйте! У меня есть технический класс, который используется только в одном другом классе,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru