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

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

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

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

23.05.2014, 17:55. Просмотров 620. Ответов 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++
Здравствуйте! Работаю над деревом, в котором есть две структуры: struct file { public: string name; //имя string...

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 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
74 / 51 / 2
Регистрация: 21.05.2012
Сообщений: 1,163
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
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.05.2014, 19:06     Области видимости функций #4
У vector нет метода push_bask(), есть:
Цитата Сообщение от alsav22 Посмотреть сообщение
push_back()
Цитата Сообщение от eXPonent Посмотреть сообщение
его нужно разыменовывать?
Его - кого? Итератор? Нет в этом классе таких методов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 19:12     Области видимости функций
Еще ссылки по теме:

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

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

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

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

Вызов функций. Зона видимости - C++
Есть несколько функций. К примеру: void menu() {...opt1(); opt2()} void opt1() {... menu();} void opt2() {... menu();} void...

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


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

Или воспользуйтесь поиском по форуму:
eXPonent
74 / 51 / 2
Регистрация: 21.05.2012
Сообщений: 1,163
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     Области видимости функций
Ответ Создать тему
Опции темы

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