3 / 3 / 1
Регистрация: 04.11.2013
Сообщений: 285
1

Ошибка при работе с классами

20.05.2015, 18:57. Показов 1117. Ответов 4
Метки нет (Все метки)

Выдаёт ошибки:
1) expected primary-expression before "[" token; в строках (25, 27, 29, 32, 37, 38, 39, 50, 51). Скорее всего я неправильно вызываю объекты класса.
2) `cmp' undeclared (first use this function) и (Each undeclared identifier is reported only once for each function it appears in.) в 32 строке

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
#include <iostream>
#include <iomanip>
#include <stdlib.h>
 
using namespace std;
 
class aeroflot{
      char name [30];
      int number;
      char type [30];
      };
 
int main(){
    char type[30];
    int i = 0;
    int kol = 0;
    int n;
    setlocale(LC_ALL, "Russian");
        cout << "Сколько записей вы хотите ввести? (максимум 7) \n"; 
        cin >> n;
        
        //Ввод записей
        for (i=0; i<n; i++){
            cout << "Введите название пункта назначения рейса \n";
                 cin >> aeroflot[i].name ;
            cout << "Введите номер рейса \n";
                 cin >> aeroflot[i].number;
            cout << "Введите тип самолёта \n";
                 cin >> aeroflot[i].type ;
            }
            
        qsort (aeroflot, n, sizeof(aeroflot[0]), cmp);
        
        //Вывод записей
        cout << "Вывод записей на экран \n";
             for (i=0; i<n; i++){
                 cout << aeroflot[i].name <<
                  " " << aeroflot[i].number <<
                  " " << aeroflot[i].type << endl;
                 }    
        
        //Вывод записей определённого типа самолёта
        cout << "Введите тип самолёта \n";
             cin >> type;  
        
        cout << "Вывод номер рейсов и пунктов назначение, обслуживаемых типом"<<
                type<<"\n";
              
              for (i=0; i<n; i++){
                  if (strcmp(aeroflot[i].type, type)==0){
                    cout << aeroflot[i].name << setw(11) << aeroflot[i].number << endl;
                    kol++;
                  }
              }
              
              if (kol==0){
                 cout << "Таких записей нет \n";
                 }
        system ("pause");  
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2015, 18:57
Ответы с готовыми решениями:

Ошибка при работе с классами
Вот такой код: #include &lt;iostream&gt; using namespace std; class A { public: void ex(B b)...

Ошибка "в вызове функции отсутствует список аргументов" при работе с классами
Учусь работать с классами С++ но часто встречаюсь с ошибкой: c:\program files...

Ошибка в работе с классами
День добрый. Прошу помощи в решении такой проблеммы. Есть несколько классов и при компиляции...

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

4
494 / 376 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
20.05.2015, 19:44 2
Цитата Сообщение от Frip Посмотреть сообщение
cout << "Введите название пункта назначения рейса \n";
* * * * * * * * *cin >> aeroflot[i].name ;
* * * * * * cout << "Введите номер рейса \n";
* * * * * * * * *cin >> aeroflot[i].number;
* * * * * * cout << "Введите тип самолёта \n";
* * * * * * * * *cin >> aeroflot[i].type ;
* * * * * * }

Все поля класса защищены, а вы пытаетесь к ним вот так просто обратится.
1
0 / 0 / 3
Регистрация: 20.05.2015
Сообщений: 17
20.05.2015, 19:51 3
Лучший ответ Сообщение было отмечено Frip как решение

Решение

Цитата Сообщение от Frip Посмотреть сообщение
class aeroflot{
* * * char name [30];
* * * int number;
* * * char type [30];
* * * };
Вы не обьявили сколько именно у вас будет переменных класса aeroflot
Я думаю правильней будет написать вот так
C++
1
2
3
4
5
6
class aeroflot{
    public:
      char name [30];
      int number;
      char type [30];
      }A[10];
Добавлено через 1 минуту
Цитата Сообщение от Frip Посмотреть сообщение
cin >> aeroflot[i].name ;
И в строчках ввода уже указывать вот так
C++
1
cin >> A[i].name;
0
76 / 76 / 32
Регистрация: 14.04.2014
Сообщений: 408
20.05.2015, 19:52 4
Цитата Сообщение от Redfoo228 Посмотреть сообщение
будет написать вот так
тогда уж
C++
1
2
3
4
5
6
typedef class{
    public:
      char name [30];
      int number;
      char type [30];
      }Aeroflot[10];
1
3 / 3 / 1
Регистрация: 04.11.2013
Сообщений: 285
20.05.2015, 21:43  [ТС] 5
Спасибо! Совсем забыл про приватные и публичные данные в классе.

Добавлено через 32 минуты
Возник еще один вопрос.
Возникает ошибка на сортировке в функции
C++
1
qsort (aeroflot, n, sizeof(aeroflot[0]), cmp);
А именно, в этой же строке:
1) expected primary-expression before ',' token
2) `compare' undeclared (first use this function)
3) (Each undeclared identifier is reported only once for each function it appears in.)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2015, 21:43
Помогаю со студенческими работами здесь

Необъявленный идентификатор при работе с классами (функция сравнивает значение свойств объектов)
На идентификаторы power top_speed acceleration weight по 4 раза на каждый матюкается компилятор....

Ошибка в программе при работе с классами
Ребят есть задача Условие задачи Составить описание класса для определения одномерных...

Ошибки при работе с классами
Создать объекты класса &lt;имя класса&gt; (класс и его поля задаются в соответствии с выбранным вариантом...

Ошибки при работе с классами на linux
Здравствуйте, нужна помощь по классам в си++. Я не так давно пишу на си++, поэтому не ругайте...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru