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

Шаблон класса,ошибка TEMPLATE - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
correcеt
 Аватар для correcеt
-1 / 3 / 1
Регистрация: 20.04.2011
Сообщений: 412
03.01.2013, 20:55     Шаблон класса,ошибка TEMPLATE #1
Вечер добрый,с таким вопросом.
Задание:
шаблон класса "однонарпавленный линейный список". И использовать его при составлении программы, которая содержит текущую информацию о заявках на авиабилеты:
- пункт назначения,
- номер рейса,
- фамилию и инициалы пассажира,
- желаемую дату вылета.
Программа должна обеспечивать:
- хранение всех заявок в виде списка,
- добавление заявок,
- удаление заявок,
- вывод заявок по заданному номеру рейса и дате вылета,
- вывод всех заявок.
-----------------------------------------------
Скажите, в каталоге с программой надо создавать какие-то фалы или как?
Т.к вот что пишет компилятор:
Шаблон класса,ошибка TEMPLATE
И еще, глядя код,мне показалось,что нет все функции тут есть,так ли это?

---------------------------------------------------------
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
//---------------------------------------------------------------------------
 #include <iostream.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{      // =================== Файл TEMPLATE.AVB ======================
#define FILENAME "BZavia.txt"
#define TEMPFILE "Temp"
#define MAX 20
//Шаблон - класс авиабилеты
template <class T>              // Шаблон класса aviabilets
class aviabilets {
private:
FILE *fp, *tp, *printer;
 int slots[MAX];
 int count;
 
public:
  nofind();      // Функция - неудачный поиск
  openrw();      // Открыть файл  для чтения
  openwr();      // Открыть файл для записи
  getslots();    // Функция определяющая - какие ячейки заняты
  getslot();     // Функция ввода новой ячейки
  adbilet();     // Добавление билета
  delbilet();    // Удаление данных билета из списка
  showbilet();   // Вывод билета на экран
  chbilet();     // Изменение данных билета
  chcell();      // Изменение номера ячейки
  sortcells();   // Порядок возрастания номеров ячеек
  loc_punkt();   // Поиск билета по пункту назначения
  loc_fio();     // Поиск по ФИО
  loc_datvl();   // Поиск по Дате вылета
  pbilets();     // Печать билетов
 
 };
 struct BZ                  // структура с полями записей
 {
  // private:
  char punktn[20];         // Пункт назначения
  char nreis[10];          // Номер рейса
  char fio[50];            // Фамилия и инициалы пассажира
  char datvl[10];          // Дата вылета
  int number;              // Номер ячейки в базе куда заносится данные
      } disc;              // запись.диск
 
// **********************************************
   template<class T>
   aviabilets<T>::nofind() // Функция - неудачный поиск
        {
         char pause;
         puts("\nПункт назначения с таким именем не найден");
         getche();
        // pause=getchar();
         return 0;
        }
// **********************************************
     template<class T>
     aviabilets<T>::openrw() // Открыть файл  для чтения
       {
        if((fp = fopen(FILENAME,"r")) == NULL)
         {
          printf("Невозможно открыть файл %s\n", FILENAME);
          exit(0);
         }
       if((tp = fopen(TEMPFILE,"w")) == NULL)
        {
          printf("Невозможно открыть файл %s\n", TEMPFILE);
          fclose(fp);
          exit(0);
        }
        return 0;
        }
 
 
// **********************************************
                                 template<class T>
// Здесь ВЫ дописываете все функции c aviabilets<T>::ФУНКЦИЯ
 
// **********************************************
// ===========================================================
 
Переносим этот файл(TEMPLATE.AVB) в директорию где находятся файлы шаблонов
других классов и библиотек *.h
Ты их знаешь:
#include "stdio.h"
# include <conio.h>
# include <stdlib.h>
# include <string.h>
# include <iostream.h>
и другие
 
 
Создаем другой файл - ABILET.CPP
В него переносим 
 
// ========================= ABILET.CPP ======================
/*Заявки на авибилеты*/
#include  <template.avb> // Указываем файл шаблон класса aviabilets
#include  <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <string.h>
# include <iostream.h>
 
// ++++++++++++++++++++ Основной модуль ++++++++++++++++++++++
 main()
      {
       aviabilets<char> a; // Переводим в класс a
       char select;
       a.getslots();
    do
      {
      clrscr();
       puts("Информация о авиабилетах в базе аэропорта\n");
       puts("1 Добавить новый авибилет в базу\n");
       puts("2 Удалить авиабилет из базы\n");
       puts("3 Редактировать содержимое авиабилета\n");
       puts("4 Изменить номер ячейки\n");
       puts("5 Сортировка авиабилетов билетов\n");
       puts("6 Найти авиабилет\n");
       puts("7 Вывести на печать\n");
       puts("8 Выйти из программы\n");
       printf("Пожалуйста, введите Ваш выбор: ");
     select = getchar();
     putchar('\n');
     switch(select)
    {
      case '1':
      a.adbilet();
        break;
      case '2':
      a.delbilet();
        break;
      case '3':
      a.chbilet();
        break;
      case '4':
      a.chcell();
        break;
      case '5':
      a.sortcells();
        break;
      case '6':
      a.loc_punkt();
        break;
      case '7':
      a.pbilets();
        break;
      case '8':
        break;
      default:
      puts("Ошибка, повторите ввод\n\n");
    }
       }
     while(select!='8');
     return 0;
     }
 
}
//---------------------------------------------------------------------------
----------------------------
Заранее,Спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
correcеt
 Аватар для correcеt
-1 / 3 / 1
Регистрация: 20.04.2011
Сообщений: 412
04.01.2013, 23:23  [ТС]     Шаблон класса,ошибка TEMPLATE #21
Цитата Сообщение от Buildog Посмотреть сообщение
Обалдеть, у тебя все функции получаются inline, потому что ты их сразу в поле private описываешь, ещё у меня ругается на странные символы ® и вот если inline то эта строчка void List::InsertFirst тоже выдает ошибку
а не в public: функции описаны?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Buildog
40 / 40 / 2
Регистрация: 29.04.2012
Сообщений: 185
04.01.2013, 23:36     Шаблон класса,ошибка TEMPLATE #22
Потом ещё //string str закомментирован, тоже вызовет ошибки, далее End не объявлен, вообще не понятно что это

Добавлено через 1 минуту
Тьфу ты... два public: ... странно как то вообще это всё
correcеt
 Аватар для correcеt
-1 / 3 / 1
Регистрация: 20.04.2011
Сообщений: 412
04.01.2013, 23:37  [ТС]     Шаблон класса,ошибка TEMPLATE #23
Цитата Сообщение от Buildog Посмотреть сообщение
Потом ещё //string str закомментирован, тоже вызовет ошибки, далее End не объявлен, вообще не понятно что это

Добавлено через 1 минуту
Тьфу ты... два public: ... странно как то вообще это всё
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
}
ListItem*addx()//добавление элемента в список из консоли
{
ListItem*ref->first = new ListItem;
ref = ref->first;
string str;
    getline(cin,str);
    cout<<"\nВведите Фамилию и инициалы заказчика:\n";
    getline(cin,str);
    ref->FIO=str;
    cout<<"\nВведите пункт назначения:\n";
    getline(cin,str);
    ref->punkt=str;
    cout<<"\nВведите номе рейса:\n";
    cin>>ref->nomer;
    cout<<"\nВведите дату:\n\tдень:";
    cin>>ref->den;
    cout<<"\n\tмесяц:";
    cin>>ref->mesac;
    cout<<"\n\tгод:";
    cin>>ref->god;
    End = ref;
    return First;
}
а если так?
Buildog
40 / 40 / 2
Регистрация: 29.04.2012
Сообщений: 185
04.01.2013, 23:39     Шаблон класса,ошибка TEMPLATE #24
Опять же он будет ругаться на строку
C++
1
ListItem*ref->first = new ListItem;
и непонятно, что за
C++
1
End = ref;
для него это необъявленная переменная
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2013, 18:02     Шаблон класса,ошибка TEMPLATE
Еще ссылки по теме:

C++ Компиляция класса вектор. Ошибка: missing template arguments before «v»
Не получается создать template для класса C++
'MyQueue' : use of class template requires template argument list C++

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

Или воспользуйтесь поиском по форуму:
correcеt
 Аватар для correcеt
-1 / 3 / 1
Регистрация: 20.04.2011
Сообщений: 412
05.01.2013, 18:02  [ТС]     Шаблон класса,ошибка TEMPLATE #25
Цитата Сообщение от Buildog Посмотреть сообщение
Опять же он будет ругаться на строку
C++
1
ListItem*ref->first = new ListItem;
и непонятно, что за
C++
1
End = ref;
для него это необъявленная переменная
а как тогда реализовать еще функцию ввода из консоли?

Добавлено через 18 часов 21 минуту
народ,киньте идею....натолкните на идею....
Yandex
Объявления
05.01.2013, 18:02     Шаблон класса,ошибка TEMPLATE
Ответ Создать тему
Опции темы

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