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

Создание шаблона - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заменить элементы главной диагонали матрицы на нули http://www.cyberforum.ru/cpp-beginners/thread582343.html
Заменить элементы главной диагонали на нули
C++ int to string с разделением на разряды Как перевести целое 123456789 в строку "123 456 789"? http://www.cyberforum.ru/cpp-beginners/thread582334.html
Класс: Реализация через битовое поле класса "Множество" C++
Реализация через битовое поле. Как сделать ввод и вывод множества и так чтобы элементы хранились в отсортированном порядке? #include <iostream> #include<stdexcept> using namespace std; typedef unsigned short WORD; class Set {
Потоки контейнеры C++
Ребят, всем привет, помогите пожалуйста задачу решить плз Создать функцию разархивации файлов. Несколько файлов были слиты в один следующим образом: сначала идут названия всех файлов и их размеры, затем данные из этих файлов, разделенные, например, строками вида #########################. Надо разделить этот файл обратно на несколько файлов. Функция принимает название входного файла. ...
C++ Найти максимальный элемент списка и поменять его местами с первым элементом http://www.cyberforum.ru/cpp-beginners/thread582288.html
Информационное поле эл-та стека числовое. Найти максимальный эл-т списка и поменять его местами с первым элементом. Вот есть код программы но он неработает. #include <iostream> #pragma hdrstop using namespace std; //---------------------------------------------------------------------------
C++ open serial port windows Можно ли открыть com port на windows используя функцию open("COM3", O_RDWR)? Важно не использовать CreatFile или OpenFile. подробнее

Показать сообщение отдельно
Jelum
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 17
23.05.2012, 00:41     Создание шаблона
Задача - сделать шаблон контейнера. То до чего додумался:

templates.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "stdafx.h"
 
#ifndef _TEMPL_H
#define _TEMPL_H
 
template<class T> 
class LinkedList{
    struct Node{
        T *data;
        Node *next, *prev;
        Node(T* dat, Node* nxt, Node* prv)
            : data(dat), next(nxt), prev(prv) {};
        Node()
            : data(0), next(0), prev(0) {};
        } *node;
    int size;
 
    LinkedList(const LinkedList&) {};
public:
    // constr
    LinkedList() : size(0), node(0) {};
    ~LinkedList();
 
    //iterator
    class iterator;
    friend class iterator;
    class iterator{
        Node *ptr;
    public:
        // constr
        iterator(); // end
        iterator(const iterator&); // special position
        iterator(const LinkedList&); // begin
 
        // operators
        bool operator++ ();
        bool operator++ (int);
        bool operator-- ();
        bool operator-- (int);
        bool operator== (const iterator&);
        bool operator!= (const iterator&);
 
        // funcs
        T* current();
        };
 
    // funcs
    bool add(T*);
    bool isEmpty();
    bool reset();
    bool remove(iterator&);
    bool remove_back();
    T* show(const iterator&);
 
    iterator begin();
    iterator end();
    };
 
#endif // _TEMPL_H


template.cpp

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
#include "stdafx.h"
 
 
#include <iostream>
#include "template.h"
 
// iterator
 
// end
template<class T> 
LinkedList<T>::iterator::iterator(){
    ptr = 0;
    };
 
// special position
template<class T> 
LinkedList<T>::iterator::iterator(const iterator& org){
    ptr = org.ptr;
    };
 
// begin
template<class T>
LinkedList<T>::iterator::iterator(const LinkedList& org){
    ptr = org.node;
    };
 
// operators
template<class T> bool LinkedList<T>::iterator::operator++ (){
    if(ptr->next){
        ptr = ptr->next;
        return 1;
        }
    return 0;
    };
template<class T> bool LinkedList<T>::iterator::operator++ (int){
    return operator++;
    };
 
template<class T> bool LinkedList<T>::iterator::operator-- (){
    if(ptr->prev){
        ptr = ptr->prev;
        return 1;
        }
    return 0;
    };
template<class T> bool LinkedList<T>::iterator::operator-- (int){
    return operator--;
    };
 
template<class T> 
bool LinkedList<T>::iterator::operator== (const iterator& org){
    (org.ptr == ptr)? return 1: return 0;
    };
template<class T> 
bool LinkedList<T>::iterator::operator!= (const iterator& org){
    return !(operator== (org));
    };
 
template<class T> T* LinkedList<T>::iterator::current(){
    return ptr->data;
    };
 
// LinkedList
template<class T> LinkedList<T>::~LinkedList(){
    reset();
    delete node;
    node = 0;
    };
 
template<class T> bool LinkedList<T>::add(T* dat){
    node = new (std::nothrow) Node(dat,node,0);
    if(node){
        node->next->prev = node;
        size++;
        return 1;
        }
    return 0;
    };
 
template<class T> bool LinkedList<T>::isEmpty(){
    return (size? 0: 1);
    };
 
template<class T> bool LinkedList<T>::reset(){
    while(remove_back());
    if(size)
        return 0;
    return 1;
    };
 
template<class T> bool LinkedList<T>::remove(iterator& ind){
    Node *tmp;
    tmp = ind.ptr;
 
    if(!tmp)
        return 0;
 
    if(tmp->prev){
        ind--;
        tmp->prev->next = tmp->next;
        }
    if(tmp->next){
        tmp->next->prev = tmp->prev;
        ind++;
        }
    delete tmp;
    tmp = 0;
    return 1;
    };
 
template<class T> bool LinkedList<T>::remove_back(){
    Node *ptr;
    ptr = node;
    if(ptr){ // if list has any elem
        while(ptr->next)
            ptr = ptr->next;
        ptr = ptr->prev;
        delete ptr->next;
        ptr->netx = 0;
        return 1;
        }
    return 0; // nothing to delete
    };
 
template<class T> T* LinkedList<T>::show(const iterator& ind){
    iterator tmp(ind);
    return tmp.current();
    };
 
template<class T> LinkedList<T>::iterator LinkedList<T>::begin(){
    return iterator(*this);
    };
 
template<class T> LinkedList<T>::iterator LinkedList<T>::end(){
    iterator tmp(*this);
    while(tmp++);
    return tmp;
    };


ошибки visual studio

Warning 1 warning C4346: 'LinkedList<T>::iterator' : dependent name is not a type c:\oop\ex5\ex5\template.cpp 130
Error 2 error C2143: syntax error : missing ';' before 'LinkedList<T>::begin' c:\oop\ex5\ex5\template.cpp 130
Error 3 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\oop\ex5\ex5\template.cpp 130
Error 4 error C1903: unable to recover from previous error(s); stopping compilation c:\oop\ex5\ex5\template.cpp 130

строка 130 - template<class T> LinkedList<T>::iterator LinkedList<T>::begin(){



как написать правильнее, как исправить ошибки

Добавлено через 12 часов 59 минут
вопрос до сих пор актуален
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru