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

Динамический массив (найти ошибку) - C++

Восстановить пароль Регистрация
 
Noooob
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 18
17.03.2013, 15:35     Динамический массив (найти ошибку) #1
Здравствуйте уважаемые знатоки!)
В общем программирую я не так давно и взялся написать динамический массив на основе связанного списка. Накатал вот такой быдлокодик

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
#include <iostream>
#include <stdexcept>
 
template <class Type> class List;
 
template <class Type>
class link
{
private:
    Type data;
    link* next;
 
    link* operator + (int n);
    
    friend std::ostream & operator << (std::ostream & out, link* l);
    friend class List<Type>;
};
template <class Type> link<Type>* link<Type>::operator+ (int n)
{
    link<Type>* current = this;
    for (int i = 0; i < n; ++i)
        current = current->next;
 
    return current;
}
template <class Type> std::ostream & operator << (std::ostream & out, link<Type>* l)
{
    out << l->data << " ";
    return out;
}
 
template <class Type>
class List
{
private:
    link<Type>* begin;
    int Size;
public:
    List(): begin(NULL), Size(0) {}
    ~List();
 
    Type & operator [] (int n);
    link<Type>* operator + (int n) { return *(this->begin) + n; }
    friend std::ostream & operator << (std::ostream &  out, List & l);
 
    void add(Type d);
    void erase(int n,int count = 1);
    bool is_empty() const { return Size ? true : false; }
};
template <class Type> List<Type>::~List()
{
    link<Type>* current = begin;
    for (int i = 0; i < Size; ++i)
    {
        link<Type>* next = current->next;
        delete current;
        current = next;
    }
    delete current;
}
template <class Type> std::ostream & operator << (std::ostream &  out, List<Type> & l)
{
    for (int i = 0; i < l.Size; ++i)
        out << l + i;
    return out;
}
template <class Type> Type & List<Type>::operator [] (int n)
{ 
    if (n < 0 || n >= Size)
        throw std::out_of_range("[]:out of range");
    return (*(this->begin) + n)->data; 
}
template <class Type> void List<Type>::add(Type d)
{
    link<Type>* newlink = new link<Type>;
    newlink->data = d;
    newlink->next = NULL;
 
    if (begin == NULL)
        begin = newlink;
    else
    {
        link<Type>* current = *begin + (Size - 1);
 
        current->next = newlink;
    }
 
    ++Size;
}
template <class Type> void List<Type>::erase(int n,int count)
{
    if (n + count - 1 < 0 || n + count - 1 >= Size)
        throw std::out_of_range("erase: out of range");
 
    link<Type>* current = *begin + n;
    link<Type>* prev = *begin + (n - 1);
    link<Type>* fin = *current + count;
        
    if (n == 0)
        begin = fin;
    else
        prev->next = fin;
        
    for (int i = 0; i < count; ++i)
    {
        link<Type>* next = current->next;
        delete current;
        current = next;
    }
 
    Size -= count;
}
Но при компиляции получаю следующую ошибку:
error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class List<int> &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$List@H@@@Z) в функции _main
1>c:\users\админ\documents\visual studio 2012\Projects\Проект66\Debug\Проект66.exe : fatal error LNK1120: неразрешенных внешних элементов: 1

Надеюсь поможете разобраться
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 15:35     Динамический массив (найти ошибку)
Посмотрите здесь:

C++ Динамический массив на C++(исправить ошибку)
C++ Динамический массив, исправить ошибку
Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив) C++
C++ Динамический массив выдаёт ошибку
C++ Динамический массив - найти ошибку в коде
Динамический массив: программа выдает ошибку памяти C++
Динамический массив, найти сумму элементов C++
C++ Динамический список строк. Найти ошибку в коде

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Why so seriouS
 Аватар для Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
17.03.2013, 15:58     Динамический массив (найти ошибку) #2
А где функция main?
Noooob
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 18
17.03.2013, 16:06  [ТС]     Динамический массив (найти ошибку) #3
Не привёл за ненадобностью
P.S Забыл указать, ошибка возникает когда я хочу вывести массив т.е
List <int> aray;
aray.add(5);
cout << aray;
Yandex
Объявления
17.03.2013, 16:06     Динамический массив (найти ошибку)
Ответ Создать тему
Опции темы

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