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

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

Войти
Регистрация
Восстановить пароль
 
eXPonent
99 / 52 / 2
Регистрация: 21.05.2012
Сообщений: 1,170
#1

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

23.05.2014, 17:55. Просмотров 662. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Области видимости функций (C++):

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

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

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

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

Вопрос об области видимости переменной - C++
У меня в проге один главный цикл и в этом цикле еще 4 цикла. Так вот, в начале главного цикла я написал int i =0; Вопрос, этот i = 0 будет...

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

4
alsav22
5425 / 4820 / 442
Регистрация: 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 / 2
Регистрация: 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
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.05.2014, 19:06 #4
У vector нет метода push_bask(), есть:
Цитата Сообщение от alsav22 Посмотреть сообщение
push_back()
Цитата Сообщение от eXPonent Посмотреть сообщение
его нужно разыменовывать?
Его - кого? Итератор? Нет в этом классе таких методов.
1
eXPonent
99 / 52 / 2
Регистрация: 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
Привет! Вот еще темы с ответами:

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

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

Расширение области видимости класса, за пределами цикла - C++
Здравствуйте, такой вопрос.... В общем пишу игру и а любая игра предполагает обновление экрана в цикле, дак вот.. Допустим я хочу создать...

Нет декларации «EOF» в этой области видимости - C++
Это не упражнение, а просто пример задачи, но видимо в нёс есть какая-то ошибка и я хочу узнать какая На всякий пожарный заголовочный...


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

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

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