Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.01.2017
Сообщений: 22
1

Не работает перегрузка операторов шаблонного класса

14.01.2017, 20:27. Показов 586. Ответов 1
Метки нет (Все метки)

помогите кто может разобрать что не работает( в понедельник екзамен, а я так туплю...
все ошибки и код прилагаются
Error 1 error LNK2019: unresolved external symbol "public: __thiscall list<int>::list<int>(int *,int)" (??0?$list@H@@QAE@PAHH@Z) referenced in function _main E:\OneDrive\3 семестр\Лабки з ООП 3 семестр\підготовка до екзамену\лабка №6 1 вар (2)\лабка №6 1 вар (2)\Source.obj лабка №6 1 вар (2)
Error 2 error LNK2019: unresolved external symbol "public: __thiscall list<int>::list<int>(class list<int> const &)" (??0?$list@H@@QAE@ABV0@@Z) referenced in function _main E:\OneDrive\3 семестр\Лабки з ООП 3 семестр\підготовка до екзамену\лабка №6 1 вар (2)\лабка №6 1 вар (2)\Source.obj лабка №6 1 вар (2)
Error 3 error LNK2019: unresolved external symbol "public: virtual __thiscall list<int>::~list<int>(void)" (??1?$list@H@@UAE@XZ) referenced in function _main E:\OneDrive\3 семестр\Лабки з ООП 3 семестр\підготовка до екзамену\лабка №6 1 вар (2)\лабка №6 1 вар (2)\Source.obj лабка №6 1 вар (2)
Error 4 error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<<int>(class std::basic_ostream<char,struct std::char_traits<char> > &,class list<int>)" (??$?6H@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@A AV01@V?$list@H@@@Z) referenced in function _main E:\OneDrive\3 семестр\Лабки з ООП 3 семестр\підготовка до екзамену\лабка №6 1 вар (2)\лабка №6 1 вар (2)\Source.obj лабка №6 1 вар (2)
Error 5 error LNK2019: unresolved external symbol "void __cdecl operator--<int>(class list<int> &)" (??$?FH@@YAXAAV?$list@H@@@Z) referenced in function _main E:\OneDrive\3 семестр\Лабки з ООП 3 семестр\підготовка до екзамену\лабка №6 1 вар (2)\лабка №6 1 вар (2)\Source.obj лабка №6 1 вар (2)
Error 6 error LNK2019: unresolved external symbol "bool __cdecl operator==<int>(class list<int>,class list<int>)" (??$?8H@@YA_NV?$list@H@@0@Z) referenced in function _main E:\OneDrive\3 семестр\Лабки з ООП 3 семестр\підготовка до екзамену\лабка №6 1 вар (2)\лабка №6 1 вар (2)\Source.obj лабка №6 1 вар (2)
Error 7 error LNK1120: 6 unresolved externals E:\OneDrive\3 семестр\Лабки з ООП 3 семестр\підготовка до екзамену\лабка №6 1 вар (2)\Debug\лабка №6 1 вар (2).exe лабка №6 1 вар (2)

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
//list.h
#pragma once
#include <iostream>
using namespace std;
template <class T>
class list
{
public:
    T* mas;
    static int MAX_ELEMENTS;
    int size;
 
 
    list() : mas(NULL), size(0){};
    list(T*, int);
    list(const list<T>&);
    void addBegin(T);
    void addEnd(T);
    void deleteBegin();
    void deleteEnd();
    void deleteAll();
    template <class T>
    friend ostream& operator<< (ostream&, const list<T>);
    template <class T>
    friend list operator+ (const list<T>, const list<T>);
    template <class T>
    friend void operator--(list<T>&);
    template <class T>
    friend bool operator==(const list<T>, const list<T>);
    
     list<T> operator=(const  list<T>);
    virtual ~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
//list.cpp
#include "list.h"
#include <iostream>
using namespace std;
 
template <class T>
int list<T>::MAX_ELEMENTS = 100;
 
template <class T>
list<T>::list(T* m, int S) {
    mas = m;
    size = S;
}
template <class T>
list<T>::list(const list<T>& a) {
    size = a.size;
    for (int i = 0; i < size; i++) {
        mas[i]  a.mas[i];
    }
}
template <class T>
void list<T>::addBegin(T a){
    T* temp = new T[size + 1];
    temp[0] = a;
    for (int i = 1; i < size + 1; i++) 
        temp[i] = mas[i - 1];
    mas--;
    for (int i = 0; i < size; i++)
        mas[i] = temp[i];
}
template <class T>
void list<T>::addEnd(T a) {
    T* temp = new T[++size];
    for (int i = 0; i < size - 1; i++)
        temp[i] = mas[i];
    mas[size - 1] = a;
    for (int i = 0; i < size; i++)
        mas[i] = temp[i];
}
template <class T>
void list<T>::deleteAll() {
    delete[]mas;
    mas = NULL;
    size = 0;
}
template <class T>
void list<T>::deleteBegin() {
    T* temp = new T[--size];
    for (int i = 0; i < size; i++)
        temp[i] = mas[i + 1];
    for (int i = 0; i < size; i++)
        mas[i] = temp[i];
}
template <class T>
void list<T>::deleteEnd() {
    T* temp = new T[--size];
    for (int i = 0; i < size; i++)
        temp[i] = mas[i];
    for (int i = 0; i < size; i++)
        mas[i] = temp[i];
}
template <class T>
ostream& operator<<(ostream& os, list<T> ob) {
    os << "Вивід:" << endl;
    for (int i = 0; i < ob.size; i++) 
        os << "№" << i + 1 << ": " << ob.mas[i] << endl;
    os << endl;
    return os;
}
template <class T>
list<T> operator+(const list<T> a, const list<T> b) {
    int Size = a.size + b.size;
    T* temp = new T[Size];
    for (int i = 0; i < a.size; i++)
        temp[i] = a.mas[i];
    for (int i = a.size, j = 0; i < Size; i++, j++)
        temp[i] = b.mas[j];
    list<T> result(temp, Size);
    return result;
}
template <class T>
void operator--(list<T> ob) {
    T* temp = new T[ob.size - 1];
    for (int i = 0; i < ob.size - 1; i++)
        temp[i] = ob.mas[i + 1];
    for (int i = 0; i < ob.size; i++)
        ob.mas[i] = temp[i];
    ob.size--;
}
template <class T1>
bool operator==(const list<T1> a, const list<T1> b) {
    if (a.size != b.size)
        return false;
    else {
        bool k = true;
        for (int i = 0; i < a.size; i++) {
            if (a.mas[i] != b.mas[i]) {
                k = false;
                break;
            }
        }
        return k;
    }
}
template <class T1>
list<T1> list<T1>::operator=(const list<T1> right) {
    delete[]mas;
    size = right.size;
    for (int i = 0; i < left.size; i++)
        mas[i] = right.mas[i];
    return *this;
}
template <class T1>
list<T1>::~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
//sourse.cpp
#include <iostream>
#include <Windows.h>
#include "list.h"
using namespace std;
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int sizeA, sizeB;
    cout << "Розмір першого списку: ";
    cin >> sizeA;
    int *a = new int[sizeA];
    for (int i = 0; i < sizeA; i++) {
        cout << "№" << i + 1 << ": ";
        cin >> a[i];
    }
    list<int> A(a, sizeA);
    cout << A;
    --A;
    cout << A;
    cout << "Розмір другого списку: ";
    cin >> sizeB;
    int *b = new int[sizeB];
    for (int i = 0; i < sizeB; i++) {
        cout << "№" << i + 1 << ": ";
        cin >> b[i];
    }
    list<int> B(b, sizeB);
    cout << B;
    //list<int> C;
    //C = A + B;
 
    //cout << C;
    if (A == B)
        cout << "однакові" << endl;
    else
        cout << "Різні" << endl;
 
 
 
 
 
 
    system("pause >> void");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2017, 20:27
Ответы с готовыми решениями:

Перегрузка операторов шаблонного класса C++
Написал такой шаблонный класс вектора: template &lt;typename Type&gt; class TVector; ...

Перегрузка операторов шаблонного класса дружественными функциями
При попытке скомпилировать проект выдаются следующие ошибки: Error 1: error LNK2019: unresolved...

Перегрузка [][] для шаблонного класса
КАК перегрузка для шаблонного класса template&lt;class ITEM&gt;...

Перегрузка оператора << шаблонного класса
Всем доброго времени суток! Целый день бьюсь над перегрузкой оператора &lt;&lt; в шаблонном классе...

1
Don't worry, be happy
17276 / 10148 / 1964
Регистрация: 27.09.2012
Сообщений: 25,391
Записей в блоге: 1
14.01.2017, 20:46 2
Не собирается проект с шаблонным классом: "undefined reference"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2017, 20:46

Перегрузка << , >> для шаблонного класса
Доброго времени суток всем! Данная тема не раз подымалась на форуме.. Но есть но.. Помогите...

Перегрузка для шаблонного класса
Есть шаблонный класс, который определен в заголовочном файле(list.h) Определение перегрузки вывода...

Перегрузка оператора -> для шаблонного класса
Здравствуйте! Возникла проблема: не могу додуматься как перегрузить оператор -&gt; так, чтобы он...

Перегрузка cout<< для шаблонного класса
Перегрузка cout&lt;&lt; для шаблонного класса - это реально или нет?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru