Как из этого класса сделать шаблон и потом реализовать в главной:
класс:
#include
#include
#include
using namespace std;
//АТД
class Atd
{
class Spisok
{
public:
char simv; //Данные
Spisok *next; //Указатель на следующий узел
Spisok (char x = NULL) //Конструктор
{
simv = x; next = NULL;
}
};
Spisok *begin, *end; //Указатели на начало, конец списка
int n; //количество элементов в списке
public:
Atd () //Конструктор по умолчанию
{
begin = end = NULL;
n = 0;
}
Atd (char *str); //Конструктор с параметрами
~Atd(); //Деструктор
bool operator !=(const Atd&); //Перегрузка операции != - проверка на неравенство
Atd& operator =(const Atd&); //Перегрузка операции присваивания
Atd& operator +(Atd&); //Перегрузка операции + -объединить два списка (Atd+Atd)
const char& operator [](int i) const; //Перегрузка операции [] -доступ к элементу в заданной
//позиции только для чтения (например: int i; char c;list L;c=L[i])
char& operator [](int i); //Перегрузка операции [] -доступ к элементу в заданной позиции
// void Input(); //Ввод с клавиатуры
void Print(); //Функция вывода на экран
};
//Конструктор с параметрами
Atd :: Atd (char* str)
{
n = 0;
Spisok *pv = new Spisok;
pv->simv = str[0];
begin = end = pv;
n++;
for (int i = 1; i < (int)strlen(str); i++)
{
Spisok *pv = new Spisok;
pv->simv = str[i];
end->next = pv;
end = pv;
n++;
}
end ->next = 0;
cout next = pv;
end = pv;
}
end ->next = 0;
n = x.n;
return (*this);
}
//Перегрузка операции + -объединить два списка (Atd+Atd)
Atd& Atd :: operator +(Atd& x)
{
cout next = x.begin;
n = n + x.n;
x.begin = 0;
x.end = 0;
return (*this);
}
//-----------------------------------------------------------------------
//Проверка АТД на неравенство
bool Atd :: operator !=(const Atd& x)
{
cout simv == dpv->simv) return false;
pv = pv->next;
dpv = dpv->next;
}
return true;
}
//статическая компонента-функция просмотра всего списка
void Atd :: Print()
{
Spisok *pv = begin;
cout