0 / 0 / 0
Регистрация: 14.01.2017
Сообщений: 22

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

14.01.2017, 20:27. Показов 854. Ответов 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_t raits@D@std@@@std@@AAV01@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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2017, 20:27
Ответы с готовыми решениями:

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

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

Перегрузка [][] для шаблонного класса
КАК перегрузка для шаблонного класса template&lt;class ITEM&gt; SmartArray2d&lt;ITEM&gt;::SmartArray2d(const int m, const int n) noexcept :...

1
Неэпический
 Аватар для Croessmah
18130 / 10714 / 2064
Регистрация: 27.09.2012
Сообщений: 27,007
Записей в блоге: 1
14.01.2017, 20:46
Не собирается проект с шаблонным классом: "undefined reference"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2017, 20:46
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Как украсить новогоднюю елку с Q# и Qiskit
EggHead 24.06.2025
Что может быть необычнее, чем применить законы квантовой механики для украшения новогодней елки? Пока другие развешивают обычные гирлянды, я решил объединить свою страсть к квантовым вычислениям с. . .
Системы нулевого доверия на C#
UnmanagedCoder 24.06.2025
Традиционная архитектура безопасности работает по принципу средневекового замка: создаём высокие стены вокруг корпоративной сети, укрепляем ворота межсетевыми экранами и системами обнаружения. . .
Снова не мой путь. Циклическое среднее, я обеими руками за проверку условия, в ракурсе данной задачи - циклическое среднее в топку.
Hrethgir 24.06.2025
Привет. Такой вопрос - нужно выводить среднее математическое между двумя направлениями, интервал значений которых может лежать в диапазоне одного оборота по кругу. Проблема заключается в том, что. . .
Деплой Flask приложения
py-thonny 23.06.2025
За годы работы с Flask я натыкался на одни и те же грабли достаточно часто, чтобы наконец научится их обходить. И сегодня хочу поделится опытом, который сбережет вам немало нервных клеток. Начнем с. . .
WebAssembly и контейнеры в .NET Aspire для оркестрации распределенных архитектур
ArchitectMsa 23.06.2025
Я наблюдаю, как WebAssembly (или просто WASM) постепенно выходит за рамки своего первоначального предназначения — исполнения кода на стороне браузера. Теперь эта технология проникает в серверную. . .
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru