Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
triatri3
6 / 6 / 8
Регистрация: 16.11.2016
Сообщений: 579
1

Добавить шаблон к классу (готовая программа)

29.11.2017, 21:32. Просмотров 746. Ответов 5
Метки нет (Все метки)

Собственно да, необходимо добавить шаблоны к классу list. Я даже понятия не имею сколько это по объёму кода. Заранее благодарю.
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
#include "stdafx.h"
#include <iostream>
 
struct element
{
    char a;
    element *next;
};
 
class list
{
public:
    list();
    void add(char c);
    explicit list(char c);        //конструктор без авто.конверирования (преобразования в типичную форму MyClass object(значение)
    void operator+(char c);
    void operator--(int i);
    bool operator != (list &l);
    void print();
    ~list();
 
private:
    element *head;
    int count;
};
 
void list::print()
{
    if (!head) std::cout << "List is empty\n";
    else
    {
        element *h, *t;
        h = head;
        do
        {
            std::cout << h->a << "<-";
            t = h->next;
            h = t;
        } while (h);
        std::cout << "\n";
    }
}
 
void list::add(char c)
{
    if (head == NULL)
    {
        head = new element;
        head->a = c;
        head->next = NULL;
        count = 1;
    }
    else
    {
        element *h;
        h = new element;
        h->a = c;
        h->next = head;
        head = h;
        count++;
    }
}
 
list::list()
{
    head = NULL;
    count = 0;
}
 
list::list(char c)
{
    head = new element;
    head->a = c;
    head->next = NULL;
    count = 1;
}
 
void list::operator+(char c)
{
    add(c);
}
 
void list::operator--(int i)
{
    if (!head->next)
    {
        element *h;
        h = head;
        head = h->next;
        delete h;
        count--;
    }
    else std::cout << "List is empty\n";
}
 
list::~list()
{
    element *h;
    if (head)
    {
        do
        {
            h = head;
            head = h->next;
            delete h;
        } while (head);
    }
}
 
bool list::operator != (list &l)
{
    if ((!head) || (!l.head)) std::cout << "Some List is empty\n";
    else
    {
        if (count != l.count) return true;
    }
    return false;
}
 
 
int main()
{
    list ch1, ch2('a');
    ch1.print();
    ch2.print();
    ch1 + 'b';
    ch2 + 'b';
    ch1.print();
    ch2.print();
    if (ch1 != ch2) std::cout << "Not equal\n";
    else std::cout << "Are equal\n";
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2017, 21:32
Ответы с готовыми решениями:

Есть ли готовая команда, чтобы добавить в начало строки?
Хочу добавить один символ в начало строки. Может есть готовая команда?

Дерево. Готовая программа на 95%
Вот само дерево. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int todor=0;...

Готовая программа переделайте на Указатели
Помогите пожалуйста!!! Через указатели #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int main( ) { int...

Готовая программа, но не работает сортировка
Прошу помочь с программой, в строках 17-36 заключается ошибка, необходимо чтобы сортировало методом...

Нужна готовая программа на Си++ с уклоном на физику
=) дорогие программисты помогите студенту ) нужна готовая программа на Си++ ) очень хорошо если в...

5
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
30.11.2017, 09:08 2
Лучший ответ Сообщение было отмечено triatri3 как решение

Решение

C++
1
2
template<typename T>
class list
Дальше вместо char ставишь T.

Так же для структуры.
0
triatri3
6 / 6 / 8
Регистрация: 16.11.2016
Сообщений: 579
06.12.2017, 09:03  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Дальше вместо char ставишь T.
Если это использовать, то возникает множество нелепых ошибок. В каждой функции (также конструкторе, деструкторе) возникает ошибка: отсутствует список аргументов для шаблон класса "list" и подсвечивает ошибку list. Как исправить?
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
06.12.2017, 09:05 4
А там дописал template?
C++
1
2
3
template<typename T>
list::list()
{
1
triatri3
6 / 6 / 8
Регистрация: 16.11.2016
Сообщений: 579
06.12.2017, 18:13  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
А там дописал template?
Нет, спасибо, помогло.
А как исправить ошибку в строке 123 (код сверху), (компилятор указывает на list, якобы у этого слова ошибка) - отсутствует список аргументов для шаблон класса "list". (конструктор без параметров и с одним параметром, что и используется в этой строке, описан)
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
06.12.2017, 18:22 6
Вектором, что ли, никогда не пользовался? Тип указывай.
C++
1
list<char> ch1
1
06.12.2017, 18:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2017, 18:22

Готовая программа, но не работает вывод на экран
Очень прошу помочь с выводом данных из всех классов на экран в главной функции. Не могу понять в...

Готовая программа для любой работы с массивом
Вот я решил помочь всем кому надо! Вот. Оцените работу! И вот код!

Вот готовая программа, а что значит отдельная строка?
Знающие, подскажите, что означает это: cout &lt;&lt; accumulate((istream_iterator&lt;double&gt;(ifs)),...


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

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

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