Всё же никак не могу решить проблему с ошибкой во время компиляции кода.
Код:
#include "Header.h"
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
void menu();
int main()
{
setlocale(LC_ALL, "Russian");
cout << ("Добро пожаловать в программу!") << endl;
menu();
}
void menu()
{
int n;
set <int> set1(max);
int x;
do {
cout << '\n'
<< " ------------Menu------------ "
<< '\n' << ("1. Добавление эл-та в множество")
<< '\n' << ("2. Удаление эл-та из множества")
<< '\n' << ("3. Проверка вхождения эл-та в множество")
<< '\n' << ("0. Выход")
<< '\n' << "<";
cin >> n;
system("cls");
switch (n)
{
case '1':cout << ("/add od");
cin >> x;
set1.add(x);
break;
case '2':cout << ("/del id)");
cout << ("Введите величину эл-та");
cin >> x;
set1.del(x);
case '3':cout << ("Выберете елемент для проверки");
cout << ("Введите величину эл-та");
cin >> x;
if (set1.check_in(x))
cout << ("Элемент содержится в данном множестве");
else
cout << ("Элемент не содержится в данном множестве");
break;
case '0':return;
default:cout << ("Действие не выбрано");
}
} while (true);
}
template <class T>
void set<T> ::add(T x)
{
if (size < max_size)
{
if (!check_in(x))
{
a[size] = x;
size += 1;
cout << ("Добавление прошло успешно");
}
else
cout << ("Добавление невозможно");
}
else
cout << ("Добавление невозможно");
}
template <class T>
void set <T>::del(T x)
{
bool ok;
ok = false;
if (size != 0)
{
for (int i = 0;i < size;i++)
{
if (a[i] == x)
{
for (int j = i;j < size;j++)
{
a[j] = a[j + 1];
}
size -= 1;
ok = true;;
}
}
if (ok)
cout << ("Удаление прошло успешно");
}
else
cout << ("Удаление невозможно");
}
template <class T>
bool set <T>::check_in(T x)
{
for (int i = 0;i < size;i++)
if (a[i] == x)
return true;
return false;
}
Файл Header.h:
#pragma once
extern int max = 5;
template <class T>
class set
{
private:
T* a;
int max_size;
int size;
public:
//Конструкторы:
set(int maxim);
set(set <T>& x);
void add(T x);//добавление эл-та в мнохество
void del(T x);//удаление эл-та из множества
bool check_in(T x);//проверка вхождения эл-та в множество
};
Прошу помочь с решением.
Ошибка LNK2019 ссылка на неразрешенный внешний символ "public: __thiscall set<int>::set<int>(int)" (??0?$set@H@@QAE@H@Z) в функции "void __cdecl menu(void)" (?menu@@YAXXZ)
