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

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

Войти
Регистрация
Восстановить пароль
 
QWERY_2012
5 / 5 / 2
Регистрация: 09.09.2012
Сообщений: 227
#1

программка по шаблонам - C++

04.03.2013, 01:37. Просмотров 453. Ответов 1
Метки нет (Все метки)

Пытаюсь конвертировать контайнер класс в шаблон.
Укажите, пожалуйста, на ошибки в программе:

Header file "sequence4.h"
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
#ifndef MAIN_SAVITCH_SEQUENCE3_H
#define MAIN_SAVITCH_SEQUENCE3_H
#include <cstdlib>  // Provides size_t
#include "node2.h"  // Provides node class
 
namespace main_savitch_5
{
    template <class Item>
    class sequence
    {
    public:
        // TYPEDEFS and MEMBER CONSTANTS
        typedef Item value_type;
        typedef std::size_t size_type;
        // CONSTRUCTORS and DESTRUCTOR
        sequence( );
        sequence(const sequence& source);
    ~sequence( );
        // MODIFICATION MEMBER FUNCTIONS
        void start( );
        void advance( );
        void insert(const value_type& entry);
        void attach(const value_type& entry);
        void operator =(const sequence& source);
    void remove_current( );
        // CONSTANT MEMBER FUNCTIONS
        size_type size( ) const { return many_nodes; }
        bool is_item( ) const { return (cursor != NULL); }
        value_type current( ) const;
    private:
    node <Item> *head_ptr;
    node <Item>  *tail_ptr;
    node <Item>  *cursor;
    node <Item>  *precursor;
    size_type many_nodes;
    };
}
 
#include "sequence4.template" // Include the implementation
#endif
Implementation file:
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
165
166
167
168
169
170
171
172
173
#include <cassert>  // Provides assert
#include <cstdlib>  // Provides NULL, rand, size_t
#include "node2.h"  // Provides node and the linked list functions
#include "sequence4.h"
using namespace std;
 
namespace main_savitch_5
{   
    template <class Item>
    sequence<Item>::sequence( )
    // Library facilities used: cstdlib
    {
    head_ptr = tail_ptr = cursor = precursor = NULL;
    many_nodes = 0;
    }
 
    template <class Item>
    sequence<Item>::sequence(const sequence& source)
    // Library facilities used: cstdlib, node1.h
    {
    if (source.cursor == NULL)
    {   // There is no current item in the source list:
        list_copy(source.head_ptr, head_ptr, tail_ptr);
        cursor = precursor = NULL;
    }
    else if (source.precursor == NULL)
    {   // The current item in the source is at its head:
        list_copy(source.head_ptr, head_ptr, tail_ptr);
        cursor = head_ptr;
        precursor = NULL;
    }
    else
    {   // The current item in the source is not at its head:
        list_piece(source.head_ptr, source.cursor, head_ptr, precursor);
        list_piece(source.cursor, NULL, cursor, tail_ptr);
        precursor->set_link(cursor);
    }
        many_nodes = source.many_nodes;
    }
    
    template <class Item>
    sequence<Item>::~sequence( )
    // Library facilities used: node1.h
    {
        list_clear(head_ptr);
        many_nodes = 0;
    }
 
    template <class Item>
    void sequence<Item>::start( )
    // Library facilities used: cstdlib
    {
    precursor = NULL;
    cursor = head_ptr;
    }
    
    template <class Item>
    void sequence<Item>::advance( )
    // Library facilities used: node1.h
    {
    assert(is_item());
    precursor = cursor;
    cursor = cursor->link( );
    if (cursor == NULL)
        precursor = NULL;
    }
 
 
    template <class Item>
    void sequence<Item>::insert(const value_type& entry)
    // Library facilities used: cstdlib, node1.h
    {
    if (precursor == NULL)
    {   // The new entry goes at the front:
        list_head_insert(head_ptr, entry);
        cursor = head_ptr;
        if (tail_ptr == NULL)
        tail_ptr = head_ptr; // There were no other nodes.
    }
    else
    {   // The new entry goes between precursor and cursor,
        // and the cursor is set to point at this new entry.
        list_insert(precursor, entry);
        cursor = precursor->link( );
    }
    ++many_nodes;
    }
 
    template <class Item>
    void sequence<Item>::attach(const value_type& entry)
    // Library facilities used: node1.h
    {
    if (tail_ptr == NULL)
        insert(entry); // First node of the list
    else if (cursor == NULL)
    {   // The new entry goes after the current tail:
        list_insert(tail_ptr, entry);
        precursor = tail_ptr;
        cursor = tail_ptr = precursor->link( );
        ++many_nodes;
    }
    else
    {   // The new entry goes after the current cursor:
        list_insert(cursor, entry);
        precursor = cursor;
        cursor = precursor->link( );
        if (tail_ptr == precursor)
        tail_ptr = cursor;
        ++many_nodes;
    }
    }
 
    template <class Item>
    void sequence<Item>::remove_current( )
    // Library facilities used: cassert, cstdlib, node1.h
    {
    assert(is_item( ));    
    if (cursor == head_ptr)
    {   // Remove the front node:
        list_head_remove(head_ptr);
        cursor = head_ptr;
        if (cursor == NULL)
        tail_ptr = NULL; // No more nodes on the list.
    }
    else 
    {   // Remove a node that is not at the head:
        list_remove(precursor);
        cursor = precursor->link( );
        if (cursor == NULL)
        {   // We just removed the old tail node:
        tail_ptr = precursor;
        precursor = NULL;
        }
    }
    --many_nodes;
    }
    
    template <class Item>
    void sequence<Item>::operator =(const sequence& source)
    // Library facilities used: cstdlib, node1.h
    {
    if (this == &source)
            return;
 
    list_clear(head_ptr);
    if (source.cursor == NULL)
    {   // There is no current item in the source list:
        list_copy(source.head_ptr, head_ptr, tail_ptr);
        cursor = precursor = NULL;
    }
    else if (source.precursor == NULL)
    {   // The current item in the source is at its head:
        list_copy(source.head_ptr, head_ptr, tail_ptr);
        cursor = head_ptr;
        precursor = NULL;
    }
    else
    {   // The current item in the source is not at its head:
        list_piece(source.head_ptr, source.cursor, head_ptr, precursor);
        list_piece(source.cursor, NULL, cursor, tail_ptr);
        precursor->set_link(cursor);
    }
        many_nodes = source.many_nodes;
    }
 
    template <class Item>
    typename sequence<Item>::value_type sequence<Item>::current( ) const
    // Library functions used: cassert, node1.h
    {
    assert(is_item( ));
    return cursor->data( );
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2013, 01:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос программка по шаблонам (C++):

Поясните по шаблонам - C++
Читаю Солтера, а именно шаблоны. Наткнулся на &quot;некоторые компиляторы требуют что бы определения шаблонных методов помещались в...

вопрос по шаблонам - C++
начал разбираться в шаблонах и что то не получается вот код без шаблона все работает #include&lt;iostream&gt; #include&lt;string&gt; ...

Необходим совет по шаблонам - C++
Доброго всем времени суток! Изучаю шаблоны - по ходу дела вопросы на понимание темы: 1. Учитывая прототип для шаблон функции: ...

Глупый вопрос по шаблонам - C++
Доброе время суток! Я достаточно опытный программист Java, но жизнь, как говорится, заставила переквалифицироваться на C++, причем,...

Передача параметров по значению и по константным ссылкам применительно к шаблонам - C++
Такс... С xvalue разобрались, вопрос следующий. Допустим у меня есть шаблон некой операции. Например template&lt;typename T&gt; ...

Программка на Си++ - C++
Добрый вечер, пишу свою первую программу на с++ и вот какое условие стоит в ней, программу написал и она отрабатывает, но не могу понять...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
anmartex
...
1703 / 1196 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
04.03.2013, 09:45 #2
QWERY_2012, а где node2.h?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2013, 09:45
Привет! Вот еще темы с ответами:

программка на классы - C++
пожалуйста напишите обычную программку на классы заранее спасибо

Программка зависает - C++
Здравствуйте дорогие форумчане. Вот пытаюсь сортировку сделать. Не получается. Укажите пожалуйста ошибку #include &lt;iostream&gt; ...

Не запускается программка - C++
Привет! Скачал компилятор Dev C++ написал пару строк для проверки #include &lt;iostream&gt; using namespace std; int main() { ...

c программка со строками - C++
Залание Даны строки A и B. Если в A есть русские буквы, а в B нет повторяющихся символов, то упорядочить символы B в порядке, обратном к...


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

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

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